Search code examples
kuberneteskubernetes-helmkubernetes-ingressnginx-ingress

HELM admission is constantly creating Pod in status "Container Creating"


I am using K8S version 19.

I tried to install second nginx-ingress controller on my server (I have already one for Linux so I tried to install for Windows as well)

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"

This failed with "Error: failed pre-install: timed out waiting for the condition".

So I have run helm uninstall to remove that chart

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

But I am getting Validation Webhook Pod created constantly

kubectl get pods
NAME                                                      READY   STATUS              RESTARTS   AGE

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

I delete pod with kubectl delete pod but it get created again and again.

I tried also kubectl delete -A ValidatingWebhookConfiguration nginx-ingress-win-ingress-nginx-admission but I am getting message not found for all combinations. How I can resolve this and how I can get rid off this? Thank you!!!


Solution

  • If this Pod is managed by a Deployment,StatefulSet,DaemonSet etc., it will be automatically recreated every time you delete it, so trying to remove a Pod in most situations makes not much sense.

    If you want to check what controlls this Pod, run:

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

    You would probably see some ReplicaSet, which is also managed by a Deployment or another object. Suppose I want to check what I should delete to get rid of my nginx-deployment-574b87c764-kjpf6 Pod. I can do this as follows:

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

    then I need to run again kubectl describe on the name of the ReplicaSet we found:

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

    Finally we can see that it is managed by a Deployment named nginx-deployment and this is the resource we need to delete to get rid of our nginx-deployment-574b87c764-kjpf6 Pod.