You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MicroK8s集群Pod处于Terminating状态但无法定位的排查求助

问题:Terminating状态Pod无法删除且提示NotFound

在MicroK8s集群中,有一个Pod一直处于Terminating状态,但尝试强制删除或移除终结器时,系统返回Pod不存在的错误。

命令执行情况:

$ kubectl get pods
NAME           READY   STATUS        RESTARTS   AGE
net-exporter   1/1     Terminating   0          109m
$ kubectl describe pod net-exporter
Error from server (NotFound): pods "net-exporter" not found

尝试执行kubectl describe net_exporter同样无法正常执行。

已尝试的操作

  • 删除Pod所在的命名空间,但该资源状态异常,API服务器不允许此操作。
  • 通过MicroK8s的ctr container ls命令查看运行中的容器,未找到相关容器。
  • 尝试用kubectl的各种方式访问该Pod,均返回NotFound错误。
  • 执行microk8s reset重置节点,但Pod仍处于Terminating状态。

调试与解决步骤

1. 校验API Server缓存与etcd数据一致性

这种异常通常是API Server缓存和etcd实际数据不一致导致的,直接查询etcd中的Pod数据:

# 进入MicroK8s的etcd容器
microk8s kubectl exec -it -n kube-system etcd-$(hostname) -- sh
# 在etcd中查询目标Pod的键值
ETCDCTL_API=3 etcdctl get /registry/pods/default/net-exporter --prefix --keys-only
  • 如果etcd中存在该Pod的键值:说明API Server缓存异常
  • 如果etcd中不存在:说明是kubectl本地缓存问题

2. 清理kubectl本地缓存

# 删除kubectl本地缓存目录
rm -rf ~/.kube/cache
# 重新获取Pod列表
kubectl get pods

3. 强制清理etcd中的残留Pod数据(仅确认容器已停止时操作)

若etcd中存在该Pod的残留数据,直接删除对应条目:

# 在etcd容器内执行,替换default为Pod实际命名空间
ETCDCTL_API=3 etcdctl del /registry/pods/default/net-exporter

4. 重启kube-apiserver刷新缓存

# 重启MicroK8s集群
microk8s stop && microk8s start
# 或单独重启kube-apiserver Pod
microk8s kubectl delete pod -n kube-system kube-apiserver-$(hostname)

重启后API Server会重新从etcd加载数据,缓存将被刷新。

5. 清理kubelet残留状态数据

如果kubelet保留了Pod的状态记录,也会导致异常:

# 查看kubelet的Pod状态目录
ls /var/snap/microk8s/current/var/lib/kubelet/pods/
# 删除对应Pod的UUID目录(替换为实际UUID)
sudo rm -rf /var/snap/microk8s/current/var/lib/kubelet/pods/<Pod-UUID>
# 重启kubelet
microk8s kubectl delete pod -n kube-system kubelet-$(hostname)

内容的提问来源于stack exchange,提问作者Alex Tjaarda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 22:35:16