HELM 准入不断创建状态为“容器创建”的 Pod

问题描述

我使用的是 K8S 版本 19。

我尝试在我的服务器上安装第二个 nginx-ingress 控制器(我已经有一个用于 Linux,所以我也尝试为 Windows 安装)

helm install nginx-ingress-win ingress-Nginx/ingress-Nginx 
-f internal-ingress.yaml 
--set controller.nodeselector."beta\.kubernetes\.io/os"=windows 
--set defaultBackend.nodeselector."beta\.kubernetes\.io/os"=windows 
--set controller.admissionWebhooks.patch.nodeselector."beta\.kubernetes\.io/os"=windows 
--set tcp.9000="default/frontarena-ads-win-test:9000"

这失败了“错误:预安装失败:等待条件超时”。

所以我运行了 helm uninstall 来删除那个图表

helm uninstall nginx-ingress-win
release "nginx-ingress-win" uninstalled

但我不断创建验证 Webhook Pod

kubectl get pods
NAME                                                      READY   STATUS              RESTARTS   AGE

nginx-ingress-win-ingress-Nginx-admission-create-f2qcx    0/1     ContainerCreating   0          41m

我用 kubectl delete pod 删除了 pod,但它一次又一次地被创建。

我也试过 kubectl delete -A ValidatingWebhookConfiguration nginx-ingress-win-ingress-Nginx-admission 但我收到所有组合的消息 not found。我如何解决这个问题以及如何摆脱这个? 谢谢!!!

解决方法

如果此 PodDeploymentStatefulSetDaemonSet 等管理,则每次删除它时都会自动重新创建,因此尝试删除Pod 在大多数情况下没有多大意义。

如果您想检查控制此 Pod 的内容,请运行:

kubectl describe pod nginx-ingress-win-ingress-nginx-admission-create-f2qcx | grep Controlled

您可能会看到一些 ReplicaSet,它也由 Deployment 或其他对象管理。假设我想检查我应该删除什么来摆脱我的 nginx-deployment-574b87c764-kjpf6 Pod。我可以这样做:

$ kubectl describe pod nginx-deployment-574b87c764-kjpf6 | grep -i controlled
Controlled By:  ReplicaSet/nginx-deployment-574b87c764

然后我需要以我们找到的 kubectl describe 的名称再次运行 ReplicaSet

$ kubectl describe rs nginx-deployment-574b87c764 | grep -i controlled
Controlled By:  Deployment/nginx-deployment

最后我们可以看到它是由一个名为 Deploymentnginx-deployment 管理的,这是我们需要删除以摆脱我们的 nginx-deployment-574b87c764-kjpf6 Pod 的资源。