程序员技术积累

Docker镜像仓库过大的解决方案(使用Kubernetes的容

2018-09-28  本文已影响8人  洛子墟

公司应用Kubernetes已经有大半年的时间了,一些问题开始暴露出来.

问题

这就是个悲剧!
对于一个成本有限的公司来说,架构师就必须把成本作为一个考量的维度.

最初上线的系统在CI阶段是会把WAR文件和基础TOMCAT结合在一起打出一个业务的镜像包.

然后业务每打包一次,就会有一个业务镜像,灰常大!
临时的解决方案是每个业务只保留3个最新版以及线上版本,但是还是捉襟见肘!
甚至把基础TOMCAT包中的JDK换成JRE!但是都不解决根本问题.

背景是公司服务化做的比较好,拆出来的应用有300多个!
对于存储来说这就是一个巨坑!

解决方案

重新学习了一下kubernetes的课程,看到了"容器设计模式",终于发现了一个比较好的解决方案,要感谢张磊老师.

Pod是一个逻辑概念,本质是同一个Pod中的容器可以共享NETWORK namespaceVolume.

那么是不是说我在一个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: {}
上一篇下一篇

猜你喜欢

热点阅读