美文网首页程序员技术积累
Docker镜像仓库过大的解决方案(使用Kubernetes的容

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

作者: 洛子墟 | 来源:发表于2018-09-28 14:41 被阅读8次

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

    问题

    • 镜像包过大,Harbor 存储空间不足了(貌似不是分层存储)

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

    最初上线的系统在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: {}
    

    相关文章

      网友评论

        本文标题:Docker镜像仓库过大的解决方案(使用Kubernetes的容

        本文链接:https://www.haomeiwen.com/subject/bfcpoftx.html