K8S和docker的镜像不一致
问题背景:在开发一个功能,本地打包镜像上传到仓库,然后到远程服务器使用该镜像启动一个服务。结果发现开发过程中已经解决的bug在远程服务器上不断重现。我的步骤:docker rmi -fregistry.xxxxxxxxx:xxxxxdocker pull registry.xxxxxxxxx:xxxxxkubectl delete po xxxxx排查过程:先是本地确认这个问题确实解决了,在自己电
·
问题背景:
在开发一个功能,本地打包镜像上传到仓库,然后到远程服务器使用该镜像启动一个服务。结果发现开发过程中已经解决的bug在远程服务器上不断重现。
我的步骤:
docker rmi -f registry.xxxxxxxxx:xxxxx
docker pull registry.xxxxxxxxx:xxxxx
kubectl delete po xxxxx
排查过程:
先是本地确认这个问题确实解决了,在自己电脑上启动的k8s运行这个镜像也是正常的。
docker images|grep xxx
比较发现 本地和远程的镜像的IMAGE ID也是一致的。
经过漫长的重试,另找了一台服务器直接使用该镜像启动服务,发现是正常。
在有问题的服务器上,先停掉了问题服务,使用docker images prune -a删除所有未使用的镜像,然后再启动k8s pod,问题再一次出现了。然而我此时docker images|grep xxx无法找到使用的镜像,那这个pod使用的是什么镜像呢?
kubectl describe po xxxxxx
注意到这里有一个assigned动作将pod调度到data-dev2这台机器,是的,这是个多节点的k8s,而我登录的并不是这台机器。这么一来也就说的通了,我删除的是机器A的镜像,而pod使用的是机器B的镜像。
更多推荐
已为社区贡献2条内容
所有评论(0)