【解决】Pod 状态一直 Terminating,Need to kill Pod

偶然查看服务时发现有个单副本的 pod 一直处于Terminating状态,已达 8 天之久,且手动删除删除不掉

[appuser@lyj 2019-09-20 14:35:36 ~]$ kubectl get pods -n sit |grep loan-after-query-service-sit
loan-after-query-service-sit-868758d5c8-7sfcr    1/1       Running   0          14m
loan-after-query-service-sit-868758d5c8-scmfx    1/1     Terminating   0          8d

使用命令kubectl describe pod loan-after-query-service-sit-868758d5c8-scmfx -n NAMESPACE查看该 pod的描述信息, 得到如下

Events:
  Type    Reason   Age                 From                                        Message
  ----    ------   ----                ----                                        -------
  Normal  Killing  13s (x21 over 36m)  kubelet, cn-beijing.i-2ze0dg85eb6vxi1t0vcr  Killing container with id docker://loan-after-query-service:Need to kill Pod

这个问题是Kubernetes偶发的BUG,使用以下命令强制删除:

kubectl delete pod xxxxxx --grace-period=0 --force

执行命令后返回一条警告信息---> 警告:立即删除并不等待正在运行的资源已被终止的确认。资源可以无限期地继续在集群上运行。

[appuser@lyj 2019-09-20 14:24:34 ~]$ kubectl delete pods loan-after-query-service-sit-868758d5c8-scmfx -n NAMESPACE --grace-period=0 --force
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
pod "loan-after-query-service-sit-868758d5c8-scmfx" deleted

去到容器所在 Node机器上通过 docker ps 仍看得到这个已经运行 8 天的容器

[root@iz2ze0dg85eb6vxi1t0vcrz ~]# docker ps -a|grep loan-after-query-service-sit
007eb7071429        registry-vpc.cn-beijing.aliyuncs.com/9fbank/loan-after-query-service    "/bin/sh -c 'sh /u..."   7 minutes ago       Up 7 minutes                                    k8s_loan-after-query-service_loan-after-query-service-sit-868758d5c8-7sfcr_sit_3eb28c46-db6f-11e9-aee8-00163e082a66_0
7b36d58a26d5        registry-vpc.cn-beijing.aliyuncs.com/acs/pause-amd64:3.0                "/pause"                 7 minutes ago       Up 7 minutes                                    k8s_POD_loan-after-query-service-sit-868758d5c8-7sfcr_sit_3eb28c46-db6f-11e9-aee8-00163e082a66_0
21ad6e62a0f2        registry-vpc.cn-beijing.aliyuncs.com/9fbank/loan-after-query-service    "/bin/sh -c 'sh /u..."   8 days ago          Up 8 days                                       k8s_loan-after-query-service_loan-after-query-service-sit-868758d5c8-scmfx_sit_efeb3399-d462-11e9-aee8-00163e082a66_0
7691a8019419        registry-vpc.cn-beijing.aliyuncs.com/acs/pause-amd64:3.0                "/pause"                 8 days ago          Exited (0) 43 minutes ago                       k8s_POD_loan-after-query-service-sit-868758d5c8-scmfx_sit_efeb3399-d462-11e9-aee8-00163e082a66_0

手动删除该容器

[root@iz2ze0dg85eb6vxi1t0vcrz ~]# docker rm -f k8s_loan-after-query-service_loan-after-query-service-sit-868758d5c8-scmfx_sit_efeb3399-d462-11e9-aee8-00163e082a66_0
k8s_loan-after-query-service_loan-after-query-service-sit-868758d5c8-scmfx_sit_efeb3399-d462-11e9-aee8-00163e082a66_0

转载于:https://www.cnblogs.com/liyongjian5179/p/11557315.html

当一个 Pod状态一直处于 "Terminating" 状态时,这可能是由于以下几个原因导致的: 1. 资源占用:Pod 可能仍然在运行某些进程或持有某些资源,导致它无法正常终止。你可以通过查看 Pod 的日志或连接到 Pod 内部进行进一步调查,确保所有资源都已正确释放。 2. 前置条件:如果 Pod 有一些挂载的卷或网络连接等依赖关系,这些依赖关系可能需要先解除才能正常终止。你可以检查 Pod 配置以确认是否存在这样的依赖关系,并确保它们已正确处理。 3. 控制器问题:在某些情况下,可能会出现与控制器相关的问题,例如 Deployment 或 StatefulSet。这可能与控制器的更新策略、回滚等有关。你可以检查相关的控制器配置和事件日志,以查找任何问题并尝试解决它们。 为了解决 Pod 一直处于 "Terminating" 状态的问题,可以尝试以下方法: 1. 手动强制删除:使用以下命令手动强制删除该处于 "Terminating" 状态Pod: ``` kubectl delete pod <pod-name> --grace-period=0 --force ``` 这将立即删除 Pod,但可能会导致一些资源的不正确释放。请谨慎操作,并确保你了解可能产生的影响。 2. 检查和解决依赖关系:检查 Pod 的配置和依赖关系,确保没有任何挂载的卷、网络连接或其他依赖关系阻止 Pod 正常终止。必要时,解除这些依赖关系并再次尝试删除 Pod。 3. 调查控制器问题:如果 Pod 是由控制器(如 Deployment 或 StatefulSet)管理的,请检查相关的控制器配置和事件日志,以查找任何问题并尝试解决它们。可能需要更新控制器的策略或进行回滚操作。 如果上述方法都无法解决问题,你可以考虑重启 Kubernetes 节点或重新创建整个集群来恢复正常状态。请注意,在执行此类操作之前,请确保备份和保护你的重要数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值