Kubernetesクラスタ環境で作業しているときに、ワーカーノードの1つからポッドを削除する必要がある状況に遭遇することがあります。
ノード自体の問題をデバッグするか、ノードをアップグレードするか、単にクラスターをスケールダウンする必要がある場合があります。
Kubernetesポッドを削除するアクションは、kubectl delete pod
を使用すると非常に簡単です。 コマンド:
kubectl delete pod pod-name
ただし、アプリケーションの中断を最小限に抑えるために実行する必要のある特定の手順があります。この記事で詳しく説明します。
Kubernetesポッドを正常に削除
まず、すべてのポッドをリストアップします:
[email protected]:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-dep-557548758d-d2pmd 1/1 Running 0 2d23h 172.16.213.194 kworker-rj2 <none> <none>
my-dep-557548758d-gprnr 1/1 Running 0 2d23h 172.16.213.49 kworker-rj1 <none> <none>
pod-delete-demo 1/1 Running 0 4s 172.16.213.196 kworker-rj2 <none> <none>
ここで、「pod-delete-demo」という名前のポッドを削除する場合は、次のコマンドを実行します。
[email protected]:~# kubectl delete pod pod-delete-demo
pod "pod-delete-demo" deleted
すべてのポッドを一覧表示して、問題のポッドが削除されていることを確認します。
[email protected]:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-dep-557548758d-d2pmd 1/1 Running 0 2d23h 172.16.213.194 kworker-rj2 <none> <none>
my-dep-557548758d-gprnr 1/1 Running 0 2d23h 172.16.213.49 kworker-rj1 <none> <none>
実行中のpod-delete-demoポッドがないことがわかります。
Kubernetesポッドを強制的に削除します
ポッドを強制的に削除する必要があるのはなぜですか??
ポッドが終了/不明でスタックすることがあります タイムアウト後の到達不能ノードの状態。
ユーザーが到達不能なノードでポッドを正常に削除しようとすると、ポッドもこれらの状態になる可能性があります。
これらのシナリオでは、ポッドを強制的に削除できます。
kubectl version> =1.5を使用してポッドを強制的に削除する場合は、次の手順を実行します。
kubectl delete pods pod_name --grace-period=0 --force
kubectl <=1.4のいずれかのバージョンを使用している場合は、--force
を省略してください。 オプションと使用法:
kubectl delete pods pod_name --grace-period=0
次に、上記の方法を使用してポッド「pod-delete-demo」を削除しましょう。
[email protected]:~# kubectl delete pod pod-delete-demo --force --grace-period=0 --namespace=default
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
pod "pod-delete-demo" force delete
注: ポッドの削除を強制するしない ポッドが終了したというkubeletからの確認を待ちます。
これらのコマンドを実行した後でも、ポッドがUnknown
でスタックしている場合 状態を確認するには、次のコマンドを使用してポッドをクラスターから削除します。
kubectl patch pod pod-delete-demo -p '{"metadata":{"finalizers":null}}'
ポッドが削除されたことを確認します:
[email protected]:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-dep-557548758d-d2pmd 1/1 Running 0 2d23h 172.16.213.194 kworker-rj2 <none> <none>
my-dep-557548758d-gprnr 1/1 Running 0 2d23h 172.16.213.49 kworker-rj1 <none> <none>
このKubernetesのヒントがお役に立てば幸いです。その他のDevOpsのヒントとチュートリアルを購読してください。
Rakesh Jain
DevOps Professional | RHCA |ジェンキンス| Git | Docker | Kubernetes | Ansible |プロメテウス| Grafana | AWSクラウド