【问题标题】:Docker Image and it's Kubernetes Pod differDocker Image 和它的 Kubernetes Pod 不同
【发布时间】:2020-10-12 02:47:19
【问题描述】:

我修改了 Docker-Image 中的内容并运行它的 Kubernetes Pod。但是,Kubernetes Pod 包含旧版本 Docker Image 的内容,而不是修改后的内容。

这怎么可能?

我猜 K8s 工作节点正在尝试从本地获取尽可能多的层,而从 docker-registry 中只获取很少的层。 如何解决这个问题,使得每次 K8s 工作节点只从 Registry 中拉取 docker 镜像的所有层?

【问题讨论】:

    标签: kubernetes docker-registry kubernetes-pod docker-image docker-layer


    【解决方案1】:

    imagePullPolicy 设置为Always

    示例:

    apiVersion: v1
    kind: Pod
    metadata:
      name: demo
    spec:
      containers:
        - name: image-name
          image: my-image:0.0.1
          imagePullPolicy: Always # <<--here
    

    默认拉取策略是IfNotPresent,这会导致 kubelet 跳过拉取已经存在的镜像。如果您想始终强制拉动,请将其设置为 Always

    Reference

    【讨论】:

      【解决方案2】:

      在您的部署中使用imagePullPolicy: Always

      如果您过于频繁地部署应用程序(典型用例是 CI/CD),此选项会派上用场。

      如果您希望您的图像应该在没有任何缓存的情况下从本地使用 docker build 命令中的--no-cache 命令重新构建,还有一件事。

      docker build -t myimage/imagename . --no-cache 
      

      【讨论】:

        猜你喜欢
        • 2019-09-22
        • 1970-01-01
        • 2018-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-12
        • 2022-07-07
        • 1970-01-01
        相关资源
        最近更新 更多