引子,接手一个kubernetes环境,查看所有pod时,发现一个pod未正常运行,经过业务熟悉可以进行删除。但是,没有找到创建pod的资料。处理过程进行了整理,备忘和分享一下。
1、直接删除后,发现又自动创建了。
查看所有的运行的pod
# kubectl get pods -A
删除不需要的问题pod
# kubectl delete pod nginx-55f8fd7cfc-4wxzp
再次查看pod,发现又再次创建运行,后续采取强制删除也无效。
2、正确的处理方式
在 Kubernetes 中,直接删除 Pod 后 Pod 自动重建,是因为Pod被更高层的控制器(如 Deployment、StatefulSet、DaemonSet、ReplicaSet或 Job/CronJob)管理。要彻底删除 Pod 并阻止重建,需找到并删除或修改对应的控制器。
2.1找到管理 Pod 的控制器
查看 Pod 的详细信息,找到其所属的控制器
kubectl describe pod <pod-name> -n <namespace>
输出内容,找到如下内容
Controlled By: Job/my-release-ingress-nginx-admission-create
Job:当前Pod的控制器。
2.2删除Pod过程
先删job
# kubectl delete job my-release-ingress-nginx-admission-create
再删pod
# kubectl delete pod my-release-ingress-nginx-admission-create-hssvv
至此,处理完成,再次查看所有Pod,需要删除的已经正常删除。
当前为job管理控制器的处理方式,其他类型可以进行参考处理。