问题描述
我使用的是 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
。我如何解决这个问题以及如何摆脱这个?
谢谢!!!
解决方法
如果此 Pod
由 Deployment
、StatefulSet
、DaemonSet
等管理,则每次删除它时都会自动重新创建,因此尝试删除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
最后我们可以看到它是由一个名为 Deployment
的 nginx-deployment
管理的,这是我们需要删除以摆脱我们的 nginx-deployment-574b87c764-kjpf6
Pod
的资源。