このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Kubernetes入門:Podを削除して自動復帰を確認する

Kubernetesは、クラスタ内のリソースを「望ましい状態」に保つことができます。これにより、システムの安定性や可用性が向上します。今回は、Podを手動で削除し、Kubernetesが自動的にPodを再作成して「望ましい状態」を維持することを確認します。この機能は、Kubernetesの自己修復機能の一部であり、予期せぬエラーや障害からアプリケーションを保護します。

Podを削除して自動復帰を確認する。
それでは、実際にPodを削除して自動復帰を確認していきましょう。
1.Docker desktopとPowerShellの起動します。
まず、Docker desktopを起動して、コンテナ管理環境を準備します。次にPowerShellを起動し、コマンドが入力できるようにします。
PS C:\Users\joeac>
2.Podの数を確認します。
まず、現在のPodの一覧を確認し、PodのID(「NAME」欄に表示される)を控えます。ここでは、一番上のPodのIDを使用しますが、どのPodでも問題ありません。IDは後で使用するので、メモしておきます。
PS C:\Users\joeac> kubectl get pods
NAME READY STATUS RESTARTS AGE
apache-dep-77d7988fbc-5qqgn 1/1 Running 0 34m
apache-dep-77d7988fbc-7hhsj 1/1 Running 1 (63m ago) 24h
apache-dep-77d7988fbc-8vcb5 1/1 Running 0 34m
apache-dep-77d7988fbc-rgwlp 1/1 Running 0 34m
apache-dep-77d7988fbc-tzlt9 1/1 Running 1 (63m ago) 24h
apache-dep-77d7988fbc-xf8rm 1/1 Running 1 (63m ago) 24h
3.Podを削除します。
次に、取得したPodのIDを使ってPodを削除します。以下のコマンド例では、「apache-dep-77d7988fbc-5qqgn」がIDの部分なので、自分の環境で取得したIDに置き換えて使用します。
PS C:\Users\joeac> kubectl delete pod apache-dep-77d7988fbc-5qqgn
pod "apache-dep-77d7988fbc-5qqgn" deleted
4.新しいPodが作成されたことを確認します。
Podが削除された後、Kubernetesが自動的に新しいPodを作成することを確認します。再度、Podの一覧を表示して、削除したPodが新しいものに置き換わっていることを確認します。
PS C:\Users\joeac> kubectl get pods
NAME READY STATUS RESTARTS AGE
apache-dep-77d7988fbc-7hhsj 1/1 Running 1 (107m ago) 25h
apache-dep-77d7988fbc-8vcb5 1/1 Running 0 78m
apache-dep-77d7988fbc-cvj69 1/1 Running 0 78s
apache-dep-77d7988fbc-rgwlp 1/1 Running 0 78m
apache-dep-77d7988fbc-tzlt9 1/1 Running 1 (107m ago) 25h
apache-dep-77d7988fbc-xf8rm 1/1 Running 1 (107m ago) 25h
コンテナが消えたらどうなるのか
Kubernetesでは、リソースがPod単位で管理されています。そのため、Pod内のコンテナが何らかの理由で壊れたり消失した場合、Kubernetesは該当のコンテナだけでなくPod全体を再作成して、システムが「望ましい状態」を維持できるようにします。この仕組みによって、アプリケーションの可用性と安定性が確保されます。
まとめ
Kubernetesの自己修復機能により、削除されたPodは自動的に再作成され、「望ましい状態」に戻ります。この動作は、アプリケーションの高可用性と冗長性を確保するための重要な機能であり、システムの信頼性を高める役割を果たします。