这里主要总结记录类似于Java项目在K8S中解耦的部署方式。
所谓解耦,其实是将原本的tomcat环境打包成一个镜像,项目代码又打包为一个镜像,在pod中具有两个container ,代码的镜像包作为initContainers,具有优先启动权限,复制war包到指定目录,再通过共享存储的方式挂载到tomcat镜像的webapps目录下。
这样做的目的一个是可以非常清晰的看出该项目运行环境,代码版本。如果将代码跟环境打到一个镜像中,并不方便一眼查看环境和项目版本,同时如果需要变动jdk环境,只需要更新环境镜像即可。
apiVersion: v1 kind: Pod metadata: name: javaweb-2 spec: initContainers: - image: cnyunwei.cc/java-demo:v1 name: war command: ["cp", "/java-demo.war", "/app"] volumeMounts: - mountPath: /app name: app-volume containers: - image: cnyunwei.cc/tomcat:8.0 name: tomcat command: ["sh","-c","/root/tomcat-8/bin/start.sh"] volumeMounts: - mountPath: /root/tomcat-8/webapps name: app-volume ports: - containerPort: 8080 hostPort: 8001 volumes: - name: app-volume emptyDir: {}
转载请注明:菜鸟运维网 » K8S中部署Tomcat包