kubernetes secret device or resource busy
本文永久链接: https://www.xtplayer.cn/kubernetes/kubernetes-secret-device-or-resource-busy/
如上图,有时候升级业务 Pod 时,旧业务 Pod 一直处于 removing 状态。在主机上执行 docker ps -a | grep <pod 名称>
也未能查询到残留容器。登录 Pod 所在的主机,执行 docker logs kubelet --tail 100
查看 kubelet 的运行日志,可以看到以下错误日志:
Error: "UnmountVolume.TearDown failed for volume \"default-token-r9sxw\" |
处理方法
指定占用的路径
path=/var/lib/kubelet/pods/bc895c3f-2fbf-11eb-a93a-4cd98f444b4d/volumes/kubernetes.io~secret/default-token-r9sxw
查找占用路径的进程 pid 号。
通过以下命令可以查询到占用上面路径的 pid 号。
find /proc/*/mounts -exec grep ${path} {} +
应该会得到类似以下的结果,/proc/ 与 /mounts 中间则为进程 pid 号。
/proc/9706/mounts /var/lib/kubelet/pods/bc895c3f-2fbf-11eb-a93a-4cd98f444b4d/volumes/kubernetes.io~secret/default-token-r9sxw
根据上一步中查询到的 pid 号,接着执行以下命令查看具体是什么进程占用
ps -ef | grep <pid 号>
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 IT老男孩!