问题背景:

在开发一个功能,本地打包镜像上传到仓库,然后到远程服务器使用该镜像启动一个服务。结果发现开发过程中已经解决的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的镜像。

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐