原因:k8s 某一node docker 根目录磁盘不足。修改docker默认的存储路径,将之间的docker 目录同步到新的存储路径,中间有一些操作导致文件缺失。
-
查看节点状态
kubectl get nodes
节点正常。但是pod并没有调度到节点上。
-
排查问题,发现节点使用pull image 会报错,错误信息如下
failed to register layer: symlink ../88be7b5d39d745b76c97dea7c242a2ce5df7c619455255f5dc5ed5c2e01d4b3d/diff /data/docker/overlay2/l/QTAOVO74TH53ZCX47XRXER256Q: no such file or directory: Process exited with status 1
发现是因为镜像文件损坏,docker按照之前的目录构建镜像时,找不到文件。
-
重新pull镜像,发现还是会根据之前的目录构建镜像,个人猜测是因为docker元数据保存了之前镜像的镜像层信息。
-
解决办法
删除docker 镜像目录 data/docker/
停止dockersystemctl stop docker.service systemctl stop docker.socket
删除docker
重新安装yum install docker
重新pull镜像
注意:如果涉及删除docker关联的挂载数据,请谨慎操作。欢迎大家多多交流。