公司应用Kubernetes
已经有大半年的时间了,一些问题开始暴露出来.
问题
- 镜像包过大,Harbor
存储空间
不足了(貌似不是分层存储)
这就是个悲剧!
对于一个成本有限的公司来说,架构师就必须把成本作为一个考量的维度.
最初上线的系统在CI阶段是会把
WAR
文件和基础TOMCAT
结合在一起打出一个业务的镜像包.
然后业务每打包一次,就会有一个业务镜像,灰常大!
临时的解决方案是每个业务只保留3个最新版以及线上版本,但是还是捉襟见肘!
甚至把基础TOMCAT
包中的JDK
换成JRE
!但是都不解决根本问题.
背景是公司服务化做的比较好,拆出来的应用有300多个!
对于存储
来说这就是一个巨坑!
解决方案
重新学习了一下kubernetes的课程,看到了"容器设计模式",终于发现了一个比较好的解决方案,要感谢张磊老师.
Pod
是一个逻辑概念,本质是同一个Pod
中的容器可以共享NETWORK namespace
和Volume
.
那么是不是说我在一个Pod
中启动2个容器,一个TOMCAT
,一个WAR
.他们共享一个路径,启动的时候让WAR
包先启动,是不是问题就完美解决了!
参考yaml文件
apiVersion: v1
kind: Pod
metadata:
name: javaweb-2
spec:
initContainers:
- image: rockyhsu/hello:v2
name: war
command: ["cp", "/hello.war", "/app"]
volumeMounts:
- mountPath: /app
name: app-volume
containers:
- image: rockyhsu/tomcat:7.0
name: tomcat
command: ["sh","-c","/root/apache-tomcat-7.0.42-v2/bin/start.sh"]
volumeMounts:
- mountPath: /root/apache-tomcat-7.0.42-v2/webapps
name: app-volume
ports:
- containerPort: 8080
hostPort: 8001
volumes:
- name: app-volume
emptyDir: {}
网友评论