目次
こんにちは!この記事では、Kubernetes の基本である「Pod のライフサイクル」について解説します。
Pod は Kubernetes の中で最も基本的なコンポーネントで、アプリケーションを動かす「容器」のようなものです。この仕組みを理解することで、Kubernetes をより効果的に使えるようになります
また、Google Cloud の Google Kubernetes Engine(以下、GKE) を使って、実際に Pod のライフサイクルを検証してみましょう
Pod とは?
まず、Pod について簡単に説明します。
- Pod は Kubernetes の最小デプロイ単位です。
 - 1 つ以上のコンテナを含むことができますが、通常は 1 つのコンテナを持つことが多いです。
 - 同じ Pod 内のコンテナは、同じネットワーク空間やストレージボリュームを共有します。
 
Pod のライフサイクル
Pod のライフサイクルにはいくつかのフェーズがあります。それぞれの状態を理解しておくと、トラブルシューティングや管理がしやすくなります。
ライフサイクルフェーズ
1. Pending
- Pod がスケジュールされたけど、まだ実行できるノードが見つかっていない状態。
 - 例:ノードのリソースが不足している場合。
 
2. Running
- Pod が正常にノード上で実行されている状態。
 
3. Succeeded
- Pod 内の全てのコンテナが終了し、成功としてマークされた状態。
 
4. Failed
- Pod 内の少なくとも 1 つのコンテナがエラーで終了した場合。
 
5. Unknown
- Pod の状態が取得できない場合
 
GKE で Pod ライフサイクルを検証してみよう
では、GKE を使って実際に Pod のライフサイクルを見てみましょう!
ステップ 1:GKE クラスターの作成
$ gcloud container clusters create [YOUR_CLUSTER_NAME] \
    --zone=[ZONE]
ステップ 2:kubectl を設定
ターミナルで以下を実行して kubectl を設定します。
$ gcloud container clusters get-credentials [YOUR_CLUSTER_NAME] --zone [ZONE]
これでクラスターにアクセスできるようになります。
ステップ 3:サンプル Pod を作成
以下の YAML ファイルを作成し、Pod をデプロイします。
sample-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: sample-pod
spec:
  containers:
  - name: nginx
    image: nginx:1.27
kubectl apply -f sample-pod.yaml
ステップ 4:ライフサイクルを確認
1. Pod の状態を確認する:
watch "kubectl get pod sample-pod -o yaml | grep 'phase:'"
状態が Pendding -> Running に変わるを確認できるはずです
※より詳細なステータスを確認したい場合は kubectl get pod コマンドを使ってください
2. Pod を削除して Succeeded を確認
kubectl delete pod sample-pod
状態が Running -> Succeeded に変わるを確認できるはずです
3. Restart policy を設定
Pod の spec に restartPolicy を指定することで、失敗時の挙動を変更できます。
- Always(デフォルト)
- 終了後にコンテナを自動的に再起動します。
 
 - OnFailure
- エラーで終了した場合にのみコンテナを再起動します(終了ステータスがゼロ以外)。
 
 - Never
- 終了したコンテナを自動的に再起動しません。
 
 
failed-sample-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: sample-pod
spec:
  containers:
  - name: alpine
    image: alpine
    command: ["sh", "-c"]
    args:
      - exit 10
  restartPolicy: Never
4. Pod を作成して Failed を確認
kubectl apply -f failed-sample-pod.yaml
※終わったら以下を実行
kubectl delete pod sample-pod
Pod ライフサイクルの活用例
- Pending で止まる場合のトラブルシューティング
 - リソース不足、スケジューリングポリシーなどを確認
 - Failed の原因調査
 - ログ確認:
 
kubectl logs sample-pod
まとめ
Kubernetes の Pod のライフサイクルを理解することは、運用やトラブルシューティングに役立ちます。
また、GKE などのクラウドサービスを使うことで簡単に検証や実験ができます。

      
    


