我修改了Docker-Image中的内容,并运行了Kubernetes Pod。然而,Kubernetes Pod拥有旧版本Docker Image的内容,而不是修改后的版本。
这怎么可能呢?
我猜测K8s工作节点试图从本地获取尽可能多的层,而从docker注册表获取的层很少。如何解决这个问题,使得每次K8s工作节点仅从注册表中提取docker映像的所有层?
发布于 2020-06-22 17:20:17
将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
。
发布于 2020-06-22 17:22:15
在部署中使用imagePullPolicy: Always
如果您过于频繁地部署应用程序(典型的用例是CI/CD),此选项将派上用场。
还有一件事,如果你想要你的镜像应该是新鲜的,没有任何缓存从本地使用--no-cache
命令在docker build命令中。
docker build -t myimage/imagename . --no-cache
https://stackoverflow.com/questions/62511065
复制相似问题