遇到一个pod无法删除的问题


  • 对服务进行重启后发现pod状态一直是Terminating
    image

  • 查看pod详情

Events:
  Type     Reason         Age                     From     Message
  ----     ------         ----                    ----     -------
  Warning  FailedKillPod  3m24s (x81 over 5h23m)  kubelet  error killing pod: [failed to "KillContainer" for "xxxxx-xxx" with KillContainerError: "rpc error: code = Unknown desc = operation timeout: context deadline exceeded", failed to "KillPodSandbox" for "688342f1-f270-493e-ae3b-59bf0272a1df" with KillPodSandboxError: "rpc error: code = DeadlineExceeded desc = context deadline exceeded"]

image

  • 处理过程
    网上查了资料,说是查看docker和kubelet状态之类,回到环境查看发现kubelet状态无法查看,不多docker服务显示运行正常的。有文档说是要重启容器,无奈根据报错pod未找到容器。
Unit kubelet.service could not be found.

最后受到floud文章启发,对故障pod进行强制删除。成功解决问题。

  • 强制删除Terminating状态的pod
    删除前先将deployment调度为0。
kubectl -n <ns> delete pod foo --grace-period=0 --force
  • 问题分析
最近又遇到了pod无法删除,资源无法调度的问题。原因是其中一个集群节点意外脱离集群控制,所以在故障节点调度的服务全部意外关闭,无法正常重新调度。
像这种情况不应该直接进行强制删除。需要尝试将故障节点恢复到集群中。意外关闭的服务会自动恢复启动。
否则不问缘由的强制删除会将整个集群置于不安全状态中。安全生产无小事。
  • 参考文档
https://www.cnblogs.com/floud/p/10620783.html
http://docs.kubernetes.org.cn/618.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM