vSphere with Kubernetes によるスーパーバイザー クラスタで、vSphere Pod が削除できなくなることがあります。
そもそも vSphere Pod は右クリックメニューなどから削除できず、わりと悩ましい状態になります。
そこで、なぜか残ってしまった Pod を削除する方法を紹介してみます。
削除ずみの vSphere Pod が残った状態。
kubectl(kubectl delete pod ~ など)で vSphere Pod を削除すると、
下記のような状態で Pod が残ってしまうことがあります。
通常は少し待つと自動的に削除されますが、たまに 1日待っても vCenter を再起動しても削除されないことがあります。
停止された Pod が残っている様子です。
ごく稀に、起動中の Pod が残ったりもします。
kubectl では、すでに Pod が削除された状態で、
対象の名前空間では、Pod がみつかりません。
$ kubectl config current-context
lab-ns-01
$ kubectl config get-contexts lab-ns-01
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* lab-ns-01 192.168.70.97 wcp:192.168.70.97:administrator@vsphere.local lab-ns-01
$ kubectl get pods -n lab-ns-01
No resources found in lab-ns-01 namespace.
$
スーパーバイザー クラスタの名前空間を削除すれば一緒に削除できますが、
Pod 単位での削除を試みます。
vCenter インベントリに残った vSphere Pod の削除。
まず、Pod が残った名前空間に、あえて同名の Pod「demo-centos7-httpd-6b58f9f454-2jddf」を作成します。
コンテナ イメージは何でもよいので、サイズが小さそうな busybox を利用しました。
$ kubectl run demo-centos7-httpd-6b58f9f454-2jddf --image=busybox --restart=Never
pod/demo-centos7-httpd-6b58f9f454-2jddf created
このとき、名前空間にはすでに同名 Pod があるため、Pod の作成は失敗します。
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
demo-centos7-httpd-6b58f9f454-2jddf 0/1 PodVMCreationFailed 0 5s
vSphere Client でも、Pod の作成が失敗します。
ここから、あらためて Pod を削除します。
$ kubectl delete pod demo-centos7-httpd-6b58f9f454-2jddf
pod "demo-centos7-httpd-6b58f9f454-2jddf" deleted
$ kubectl get pod
No resources found in lab-ns-01 namespace.
これで Pod「demo-centos7-httpd-6b58f9f454-2jddf」は削除されました。
同様に、もう一つの vSphere Pod「demo-centos7-httpd-68979c6d58-4l47n」も削除します。
$ kubectl run demo-centos7-httpd-68979c6d58-4l47n --image=busybox --restart=Never
pod/demo-centos7-httpd-68979c6d58-4l47n created
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
demo-centos7-httpd-68979c6d58-4l47n 0/1 PodVMCreationFailed 0 22s
$ kubectl delete pod demo-centos7-httpd-68979c6d58-4l47n
pod "demo-centos7-httpd-68979c6d58-4l47n" deleted
$ kubectl get pods
No resources found in lab-ns-01 namespace.
vSphere Client でも、削除が確認できました。
このように vSphere Pod が削除できますが、他にいい方法がないかは気になっています・・・
以上、kubectl で削除できなかった vSphere Pod を削除してみる話でした。