Search code examples
kubernetesistioazure-aks

Istio -- Delete istio-control-plane Process Is Frozen


I was trying to uninstall and reinstall Istio from k8s cluster following the steps: image

But I made a mistake that I deleted the namespace before deleting the istio-control-plane: kubectl delete istiooperator istio-control-plane -n istio-system. Then when I try to delete the istio-control-plane again, it froze.

I tried to remove the finalizer using the following steps but it said Error from server (NotFound): istiooperators.install.istio.io "istio-control-plane" not found

kubectl get istiooperator -n istio-system -o json > output.json
nano output.json # and remove finalizer
kubectl replace --raw "/apis/install.istio.io/v1alpha1/namespaces/istio-system/istiooperators/istio-control-plane/finalize" -f output.json

Here is the content of kubectl get istiooperator -n istio-system -o json:

{
    "apiVersion": "v1",
    "items": [
        {
            "apiVersion": "install.istio.io/v1alpha1",
            "kind": "IstioOperator",
            "metadata": {
                "annotations": {
                    "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"install.istio.io/v1alpha1\",\"kind\":\"IstioOperator\",\"metadata\":{\"annotations\":{},\"name\":\"istio-control-plane\",\"namespace\":\"istio-system\"},\"spec\":{\"addonComponents\":{\"prometheus\":{\"enabled\":false},\"tracing\":{\"enabled\":false}},\"hub\":\"hub.docker.prod.walmart.com/istio\",\"profile\":\"default\",\"values\":{\"global\":{\"defaultNodeSelector\":{\"beta.kubernetes.io/os\":\"linux\"}}}}}\n"
                },
                "creationTimestamp": "2020-12-05T23:39:34Z",
                "deletionGracePeriodSeconds": 0,
                "deletionTimestamp": "2020-12-07T16:41:41Z",
                "finalizers": [
                ],
                "generation": 2,
                "name": "istio-control-plane",
                "namespace": "istio-system",
                "resourceVersion": "11750055",
                "selfLink": "/apis/install.istio.io/v1alpha1/namespaces/istio-system/istiooperators/istio-control-plane",
                "uid": "fda8ee4f-54e7-45e8-91ec-c328fad1a86f"
            },
            "spec": {
                "addonComponents": {
                    "prometheus": {
                        "enabled": false
                    },
                    "tracing": {
                        "enabled": false
                    }
                },
                "hub": "hub.docker.prod.walmart.com/istio",
                "profile": "default",
                "values": {
                    "global": {
                        "defaultNodeSelector": {
                            "beta.kubernetes.io/os": "linux"
                        }
                    }
                }
            },
            "status": {
                "componentStatus": {
                    "Base": {
                        "status": "HEALTHY"
                    },
                    "IngressGateways": {
                        "status": "HEALTHY"
                    },
                    "Pilot": {
                        "status": "HEALTHY"
                    }
                },
                "status": "HEALTHY"
            }
        }
    ],
    "kind": "List",
    "metadata": {
        "resourceVersion": "",
        "selfLink": ""
    }
}

Any ideas on how can I uninstall istio-control-plane manually?


Solution

  • You can use below command to change istio operator finalizer and delete it, it's a jq/kubectl oneliner made by @Rico here. I have tried also with kubectl patch but it didn't work.

    kubectl get istiooperator -n istio-system istio-control-plane -o=json | \
    jq '.metadata.finalizers = null' | kubectl apply -f -
    

    Additionally I have used istioctl operator remove

    istioctl operator remove
    Removing Istio operator...
      Removed Deployment:istio-operator:istio-operator.
      Removed Service:istio-operator:istio-operator.
      Removed ServiceAccount:istio-operator:istio-operator.
      Removed ClusterRole::istio-operator.
      Removed ClusterRoleBinding::istio-operator.
    ✔ Removal complete
    

    Results from kubectl get

    kubectl get istiooperator istio-control-plane -n istio-system
    Error from server (NotFound): namespaces "istio-system" not found