基于 Spring Boot 框架的应用如何在 kubernetes 环境部署,是沿用 Docker 容器的做法还是另有其他?接下来咱们从理论到设计再到实战,一起来感受传统后台应用在容器环境的微妙变化;
[root@localhost work]# docker history openjdk:8u181-jre-alpine3.8
IMAGE CREATED CREATED BY SIZE COMMENT
2e01f547f003 12 days ago /bin/sh -c set -x && apk add --no-cache ... 78.6 MB
12 days ago /bin/sh -c #(nop) ENV JAVA_ALPINE_VERSION... 0 B
12 days ago /bin/sh -c #(nop) ENV JAVA_VERSION=8u181 0 B
7 weeks ago /bin/sh -c #(nop) ENV PATH=/usr/local/sbi... 0 B
7 weeks ago /bin/sh -c #(nop) ENV JAVA_HOME=/usr/lib/... 0 B
7 weeks ago /bin/sh -c { echo '#!/bin/sh'; echo 's... 87 B
7 weeks ago /bin/sh -c #(nop) ENV LANG=C.UTF-8 0 B
7 weeks ago /bin/sh -c #(nop) CMD ["/bin/sh"] 0 B
7 weeks ago /bin/sh -c #(nop) ADD file:25c10b1d1b41d46... 4.41 MB
复制代码
[root@localhost work]# docker history openjdk:8u181-jdk
IMAGE CREATED CREATED BY SIZE COMMENT
954739b8bdfb 7 days ago /bin/sh -c /var/lib/dpkg/info/ca-certifica... 355 kB
7 days ago /bin/sh -c set -ex; if [ ! -d /usr/share... 348 MB
7 days ago /bin/sh -c #(nop) ENV CA_CERTIFICATES_JAV... 0 B
7 days ago /bin/sh -c #(nop) ENV JAVA_DEBIAN_VERSION... 0 B
3 weeks ago /bin/sh -c #(nop) ENV JAVA_VERSION=8u181 0 B
3 weeks ago /bin/sh -c #(nop) ENV JAVA_HOME=/docker-j... 0 B
3 weeks ago /bin/sh -c ln -svT "/usr/lib/jvm/java-8-op... 33 B
3 weeks ago /bin/sh -c { echo '#!/bin/sh'; echo 's... 87 B
3 weeks ago /bin/sh -c #(nop) ENV LANG=C.UTF-8 0 B
3 weeks ago /bin/sh -c apt-get update && apt-get insta... 2.21 MB
3 weeks ago /bin/sh -c apt-get update && apt-get insta... 142 MB
3 weeks ago /bin/sh -c set -ex; if ! command -v gpg >... 7.8 MB
3 weeks ago /bin/sh -c apt-get update && apt-get insta... 23.2 MB
3 weeks ago /bin/sh -c #(nop) CMD ["bash"] 0 B
3 weeks ago /bin/sh -c #(nop) ADD file:b3598c18dc39584... 101 MB
复制代码
<?xml version="1.0" encoding="UTF-8"?>
4.0.0
com.bolingcavalry
springbootsidecardemo
0.0.1
jar
springbootsidecardemo
Demo project for Spring Boot sidecard demo in K8S
org.springframework.boot
spring-boot-starter-parent
2.1.0.RELEASE
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
app
org.springframework.boot
spring-boot-maven-plugin
com.spotify
docker-maven-plugin
0.4.12
bolingcavalry/${project.artifactId}
${project.version}
busybox
/
${project.build.directory}
app.jar
复制代码
package com.bolingcavalry.springbootsidecardemo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
/**
* @Description: 一个最普通的Controller,hello接口返回一个字符串并带上当前时间
* @author: willzhao E-mail: zq2599@gmail.com
* @date: 2018/11/6 14:15
*/
@RestController
public class HelloController {
@RequestMapping(value = "/hello")
public String hello(){
return "Hello version 1.0 " + new Date();
}
}
复制代码
mvn clean package -U -DskipTests docker:build
复制代码
[INFO] Building image bolingcavalry/springbootsidecardemo
[INFO] Building image bolingcavalry/springbootsidecardemo
Step 1/2 : FROM busybox
---> 59788edf1f3e
Step 2/2 : ADD /app.jar //
---> 8105c9ac033b
Removing intermediate container fdc62513abf6
Successfully built 8105c9ac033b
[INFO] Built bolingcavalry/springbootsidecardemo
[INFO] Tagging bolingcavalry/springbootsidecardemo with 0.0.1
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.354 s
[INFO] Finished at: 2018-11-06T05:07:08-08:00
[INFO] Final Memory: 42M/225M
[INFO] ------------------------------------------------------------------------
复制代码
root@maven:~# docker history bolingcavalry/springbootsidecardemo:0.0.1
IMAGE CREATED CREATED BY SIZE COMMENT
8105c9ac033b 46 minutes ago /bin/sh -c #(nop) ADD file:909ca8e9c8898cd... 16.6 MB
59788edf1f3e 4 weeks ago /bin/sh -c #(nop) CMD ["sh"] 0 B
4 weeks ago /bin/sh -c #(nop) ADD file:63eebd629a5f755... 1.15 MB
复制代码
root@maven:/usr/local/work/github/blog_demos/springbootsidecardemo/target# ls -al
total 16276
drwxr-xr-x 9 root root 4096 Nov 6 05:08 .
drwxr-xr-x 5 root root 4096 Nov 6 05:29 ..
-rw-r--r-- 1 root root 16621351 Nov 6 05:08 app.jar
-rw-r--r-- 1 root root 4432 Nov 6 05:08 app.jar.original
drwxr-xr-x 3 root root 4096 Nov 6 05:08 classes
drwxr-xr-x 2 root root 4096 Nov 6 05:08 docker
drwxr-xr-x 3 root root 4096 Nov 6 05:08 generated-sources
drwxr-xr-x 3 root root 4096 Nov 6 05:08 generated-test-sources
drwxr-xr-x 2 root root 4096 Nov 6 05:08 maven-archiver
drwxr-xr-x 3 root root 4096 Nov 6 05:08 maven-status
drwxr-xr-x 3 root root 4096 Nov 6 05:08 test-classes
复制代码
#将镜像导出为tar文件
docker save 2e01f547f003 > 1.tar
###将tar文件还原为镜像
docker load < 1.tar
###还原后的镜像的名称和tag都不对,要用tag命令来设置
docker tag 8105c9ac033b bolingcavalry/springbootsidecardemo:0.0.1
复制代码
root@maven:~# docker images | grep sidecar
bolingcavalry/springbootsidecardemo 0.0.2 f6ba01c33388 11 hours ago 17.8 MB
bolingcavalry/springbootsidecardemo 0.0.1 8105c9ac033b 11 hours ago 17.8 MB
复制代码
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: javaweb
spec:
replicas: 1
template:
metadata:
labels:
name: javaweb
spec:
initContainers:
- image: bolingcavalry/springbootsidecardemo:0.0.1
name: appjar
command: ["cp", "/app.jar", "/app"]
volumeMounts:
- mountPath: /app
name: app-volume
containers:
- image: openjdk:8u181-jre-alpine3.8
name: openjdk8u181
command: ["java","-jar","/webapp/app.jar"]
volumeMounts:
- mountPath: /webapp
name: app-volume
ports:
- containerPort: 8080
volumes:
- name: app-volume
emptyDir: {}
复制代码
apiVersion: v1
kind: Service
metadata:
name: javaweb
spec:
type: NodePort
ports:
- port: 8080
nodePort: 30008
selector:
name: javaweb
复制代码
kubectl create -f javaweb-deploy.yaml \
&& kubectl create -f javaweb-svc.yaml
复制代码
kubectl apply -f javaweb-deploy.yaml
复制代码
留言与评论(共有 0 条评论) “” |