vSphere with Kubernetes によるスーパーバイザー クラスタで、vSphere Pod が削除できなくなることがあります。
そもそも vSphere Pod は右クリックメニューなどから削除できず、わりと悩ましい状態になります。
そこで、なぜか残ってしまった Pod を削除する方法を紹介してみます。
削除ずみの vSphere Pod が残った状態。
kubectl(kubectl delete pod ~ など)で vSphere Pod を削除すると、
下記のような状態で Pod が残ってしまうことがあります。
通常は少し待つと自動的に削除されますが、たまに 1日待っても vCenter を再起動しても削除されないことがあります。
停止された Pod が残っている様子です。
Image may be NSFW.
Clik here to view.
ごく稀に、起動中の Pod が残ったりもします。
Image may be NSFW.
Clik here to view.
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 の作成が失敗します。
Image may be NSFW.
Clik here to view.
ここから、あらためて 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」は削除されました。
Image may be NSFW.
Clik here to view.
同様に、もう一つの 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 でも、削除が確認できました。
Image may be NSFW.
Clik here to view.
このように vSphere Pod が削除できますが、他にいい方法がないかは気になっています・・・
以上、kubectl で削除できなかった vSphere Pod を削除してみる話でした。
Clik here to view.