【k8s】k8s容器状态Terminating无法删除

容器状态一直为Terminating的解决方案

若Pod的状态为Terminating,说明此Pod正处于关闭状态。Pod停留在Terminating状态一段时间后会被自动删除。若Pod一直停留在Terminating状态,则:

1、判断是否为k8s和docker容器状态不一致问题造成;

2、判断 Pod 上是否有 finalizers ,如果有需要确认是否是有防止删除的保护;

3、判断节点是否出现 NotReady,节点如果处于NotReady,此节点上出现 Pod 状态 Terminating 是预期中的行为

如果确定可以安全删除 Pod,可执行如下命令强制删除:

html 复制代码
kubectl delete pod [namespace] --grace-period=0 --force

k8s和docker容器状态不一致解决方法

在内存紧张、系统负载极高、IO 负载极高时,Pod 底层容器可能出现 dockerd 查询到的容器状态,跟真实容器关联进程状态不一致的问题。因为 kubelet 只跟 dockerd 通信,从 kubelet 层面,就无法感知 Pod 的真实状态了。Pod状态为Running,但实际服务异常;如果删除Pod,会长期卡在Terminating

解决方案

检测是否为BAD容器,执行下列命令有 BAD 相关输出

html 复制代码
for c in `docker ps -q`; do echo $c; pc=`docker inspect $c -f "{{ .State.Pid }}"`; echo $pc; ps aux |grep -v grep | grep " $pc " || echo "BAD: container_id: $c, pid: $pc"; done | grep BAD

批量逐个清理BAD容器。默认只会输出要删除的容器命令,复制执行会逐个删除

html 复制代码
for c in `docker ps -q`; do echo $c; pc=`docker inspect $c -f "{{ .State.Pid }}"`; echo $pc; ps aux |grep -v grep | grep " $pc " || echo docker rm -f $c; done | grep 'docker rm -f'

清理全部异常容器(重启docker)

html 复制代码
systemctl restart docker

参考

k8s容器状态Terminating无法删除

相关推荐
慧一居士2 小时前
K3s和K8s的区别
容器
AOwhisky9 小时前
Python 学习笔记(第一期与第二期)——基础语法——核心知识点自测与详解
开发语言·笔记·python·学习·云原生·运维开发
AOwhisky14 小时前
Python 学习笔记(第三期)——流程控制核心知识点自测与详解
开发语言·笔记·python·学习·云原生·运维开发·流程控制
欢醉15 小时前
k8s调用服务异常cannot allocate memory
kubernetes·k8s
阿里云云原生16 小时前
AgenticOps 已来:运维智能体如何落进生产环境
云原生
扶疏52517 小时前
Kubernetes Dashboard、动态卷供应、StatefulSet
容器·kubernetes
阿里云云原生17 小时前
告别 Token 计量的混乱:AI 网关如何通过 Credits 统一度量实现跨模型配额管理?
云原生
leijiwen17 小时前
LinkLifeVerse OS :数字经济时代的产业价值操作系统(Industry Value Operating System)
人工智能·云原生·saas·paas
阿里云云原生18 小时前
终结前端“黑盒”难题:通过 Session Replay 与三维热力图实现像素级用户行为洞察
云原生·监控
云烟成雨TD19 小时前
Kubernetes 系列【14】对象元数据:标签、标签选择器、命名空间、字段选择器
云原生·容器·kubernetes