2

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

这怎么可能?

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

4

2 回答 2

3

设置imagePullPolicyAlways

样本:

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

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

参考

于 2020-06-22T09:20:17.090 回答
1

imagePullPolicy: Always在您的部署中使用

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

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

docker build -t myimage/imagename . --no-cache 
于 2020-06-22T09:22:14.577 回答