こんにちは!Kubernetes資格の準備をしている方なら、必ず乗り越えなければならない最初の関門、Pod(ポッド)について深く掘り下げていきます。🚀
Kubernetesでコンテナを実行する際の最も基本的な単位であるPodは、単に「コンテナ一つ」を意味するものではありません。試験で頻繁に出題されるPodの構造と状態変化(ライフサイクル)を10分でマスターしましょう!

1. Podとは何か? 🧊
PodはKubernetesで作成および管理できる最小のデプロイ単位です。1つ以上のコンテナを含み、これらのコンテナはネットワークとストレージスペースを共有します。
- 共に暮らす隣人: Pod内のコンテナはlocalhostを介して互いに通信できます。🏠
- 共有リソース: ボリューム(Volume)を介してデータを共有し、同じIPアドレスを持ちます。
- 単一目的: 通常、1つのPodには1つのメインコンテナが含まれますが、ログコレクターやプロキシのような補助的な役割を果たすサイドカー(Sidecar)コンテナが一緒に含まれることもあります。
2. Podのライフサイクル(Lifecycle) 🔄
Podは作成から削除まで特定の段階を経ます。`kubectl get pod`を実行したときに表示されるSTATUS値が、この状態を示します。
① Pending (待機中) ⏳
Podの定義がシステムに受け入れられましたが、1つ以上のコンテナがまだ作成されていない状態です。
- ノードにスケジューリングされる前や、イメージをダウンロード中(ImagePullBackOff)のときに主に現れます。
② Running (実行中) ✅
Podがノードに割り当てられ、すべてのコンテナが作成されました。少なくとも1つ以上のコンテナが実行中であるか、開始/再起動プロセスにある状態です。
③ Succeeded (成功) 🎉
Pod内のすべてのコンテナが正常に終了し、再起動されない状態です。主に一度実行されて終了するJobリソースで見られます。
④ Failed (失敗) ❌
Pod内のコンテナのうち、少なくとも1つが失敗(0以外の終了コード)で終了した状態です。
⑤ Unknown (不明) ❓
ノードとの通信問題などにより、Podの状態を確認できない場合です。
3. コンテナの状態と再起動ポリシー (Restart Policy) 🛠️
Podの状態だけでなく、その内部のコンテナの状態も重要です。Waiting、Running、Terminatedの3つに分かれ、問題が発生したときにどのように動作するかはrestartPolicyによって決定されます。
- Always (デフォルト): コンテナが終了すると常に再起動します。(ウェブサーバーなどに適しています)
- OnFailure: エラーが発生して終了した場合にのみ再起動します。
- Never: 絶対に再起動しません。
4. 診断ツール: プローブ(Probes) 🔍
CKAD試験で重点的に扱われる内容です。Podが「本当に」健全であるかを確認する3つの方法があります。
- Liveness Probe: コンテナが生きているかを確認します。失敗するとコンテナを再起動します。
- Readiness Probe: コンテナがサービスリクエストを受け入れる準備ができているかを確認します。失敗すると、そのPodをエンドポイント(Service)から除外します。🚫
- Startup Probe: コンテナ内部のアプリケーションが開始されたかを確認します。完了するまで他のプローブを無効にします。
5. CKAD実践ヒント: 問題解決 💡
試験中にPodに問題が発生した場合は、次の順序で確認してください!
- kubectl get pods: 全体的な状態と再起動回数を確認します。
- kubectl describe pod
: 下部のEventsセクションを見てください。イメージが取得できないのか、スケジューリングができないのかを最も明確に示します。⭐ - kubectl logs
: コンテナ内部のアプリケーションで発生したエラーログを確認します。
🌟 要約とまとめ
- PodはKubernetesの最小単位であり、コンテナ間でリソースを共有します。
- ライフサイクルはPending -> Running -> Succeeded/Failedの流れを持ちます。
- Probesを設定することで、自己修復(Self-healing)能力を最大化できます。
Podのライフサイクルを完全に理解することは、複雑なMSA環境で障害を追跡するための最も基本的な筋肉となります。勉強中に詰まることがあれば、いつでも質問してください!🎊
コメントを残す