Kubernetesの自己修復機能
Kubernetesは、ワークロードの健全性と可用性を維持するための自己修復機能を備えています。 ノードが使用不能になった際にはワークロードを再スケジュールし、障害の発生したコンテナを自動的に置き換え、システムの望ましい状態が維持されるようにします。
自己修復機能
コンテナレベルの再起動: Pod内のコンテナが失敗した場合、Kubernetesは
restartPolicy
に基づいてコンテナを再起動します。レプリカの置換: DeploymentやStatefulSetに属するPodが失敗した場合、Kubernetesは指定されたレプリカ数を維持するために代替のPodを作成します。DaemonSetに属するPodが失敗した場合、コントロールプレーンが同じノード上で実行するための代替Podを作成します。
永続ストレージの復旧: PersistentVolume(PV)をアタッチしたPodが実行されているノードが障害を起こした場合、Kubernetesはそのボリュームを別のノード上の新しいPodに再アタッチできます。
Serviceにおける負荷分散: Serviceの背後にあるPodが失敗した場合、KubernetesはそのPodをServiceのエンドポイントから自動的に除外し、正常なPodのみにトラフィックをルーティングします。
Kubernetesの自己修復を実現する主なコンポーネントには、次のようなものがあります:
kubelet: コンテナが実行されていることを確認し、失敗したコンテナを再起動します。
ReplicaSet、StatefulSet、DaemonSetコントローラー: Podの望ましいレプリカ数を維持します。
PersistentVolumeコントローラー: ステートフルなワークロードに対してボリュームのアタッチおよびデタッチを管理します。
考慮事項
ストレージの障害: 永続ボリュームが利用不能になった場合、復旧のための手順が必要になることがあります。
アプリケーションのエラー: Kubernetesはコンテナを再起動できますが、アプリケーション内部の問題は別途対処する必要があります。
次の項目
- Podについて詳しく読む
- Kubernetesコントローラーについて学ぶ
- PersistentVolumeを探る
- ノードオートスケーリングについて読む。ノードのオートスケーリングは、クラスター内のノードが障害を起こした場合にも、自動的な修復を提供します。