kubernetes排错(六)-Pod 状态一直 Terminating

查看 Pod 事件:

复制代码
$ kubectl describe pod apigateway-6dc48bf8b6-clcwk -n cn-staging

报错有以下几种情况,不同情况处理方式不同:

1)Need to kill Pod

复制代码
Normal  Killing  39s (x735 over 15h)  kubelet, 10.179.80.31  Killing container with id docker://apigateway:Need to kill Pod

可能是磁盘满了,无法创建和删除 pod

处理建议是参考Kubernetes 最佳实践:处理容器数据磁盘被写满 (https://tencentcloudcontainerteam.github.io/tke-handbook/best-practice/kubernetes-best-practice-handle-disk-full.html)

2)DeadlineExceeded

复制代码
Warning FailedSync 3m (x408 over 1h) kubelet, 10.179.80.31 error determining status: rpc error: code = DeadlineExceeded desc = context deadline exceeded

怀疑是17版本dockerd的BUG。可通过

复制代码
kubectl -n cn-staging delete pod apigateway-6dc48bf8b6-clcwk --force --grace-period=0

强制删除pod,但 docker ps 仍看得到这个容器

处置建议:

  • 升级到docker 18. 该版本使用了新的 containerd,针对很多bug进行了修复。

  • 如果出现terminating状态的话,可以提供让容器专家进行排查,不建议直接强行删除,会可能导致一些业务上问题。

3)存在 Finalizers

k8s 资源的 metadata 里如果存在 finalizers,那么该资源一般是由某程序创建的,并且在其创建的资源的 metadata 里的 finalizers 加了一个它的标识,这意味着这个资源被删除时需要由创建资源的程序来做删除前的清理,清理完了它需要将标识从该资源的 finalizers 中移除,然后才会最终彻底删除资源。比如 Rancher 创建的一些资源就会写入 finalizers 标识。

处理建议:kubectl edit 手动编辑资源定义,删掉 finalizers,这时再看下资源,就会发现已经删掉了

相关推荐
云游牧者24 分钟前
K8S-HPA自动扩缩容实战指南
云原生·容器·kubernetes·hpa·弹性伸缩·hpv
念恒1230627 分钟前
Docker(容器技术发展史)
docker·容器
成为你的宁宁29 分钟前
【K8S存储管理:PV/PVC动态供应及NFS动态供给实战】
云原生·容器·kubernetes
容器魔方41 分钟前
“驾驭工程”下一跳?JiuwenClaw AgentTeam开启“协同工程”全新范式
人工智能·云原生·容器·架构·开源
xcLeigh1 小时前
KES大小写混合路径+国产OS/文件系统兼容实战
linux·数据库·文件系统·兼容性·麒麟·欧拉·kes
YuanDaima20481 小时前
Docker 核心架构与底层技术原理解析
运维·人工智能·docker·微服务·容器·架构·个人开发
liux35281 小时前
Kubernetes v1.27.16 部署 Prometheus + Grafana + Alertmanager 监控体系
kubernetes
weixin_417257061 小时前
ubuntu系统-dify-相关文件配置
linux·运维·ubuntu
xiaoye-duck1 小时前
《Linux系统编程》Linux权限(下):从 umask 到粘滞位的深度解析
linux
浓黑的daidai1 小时前
day-02
linux·运维·elk