---
title: "Kubernetes の Pod のライフサイクルを理解しよう！初心者向け解説と GKE での検証 | grasys blog"
url: "https://blog.grasys.io/post/yu-sato/kubernetes-pod-lifecycle"
description: "こんにちは！この記事では、Kubernetes の基本である「Pod のライフサイクル」について解説します。 Pod は Kubernetes の中で最も基本的なコンポーネントで、アプリケーションを動かす「容器」のようなものです。この仕組みを理解することで、Kubernetes をより効果的に使えるようになります ま…"
---

# Kubernetes の Pod のライフサイクルを理解しよう！初心者向け解説と GKE での検証

-   ![](/_astro/noicon.CTHOhNiB_1HMs6A.webp)[yu.sato](/authors/yu-sato/)
-   公開日：2024年12月18日
-   カテゴリー：[Tech](/categories/tech/)
-   タグ：[#GKE](/tags/gke/)[#Google Cloud](/tags/google-cloud/)[#Kubernetes](/tags/kubernetes/)

![Kubernetes の Pod のライフサイクルを理解しよう！初心者向け解説と GKE での検証](/_astro/hero.BnquBFrn_Z15TLhJ.webp)

こんにちは！この記事では、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 クラスターの作成

Plain textcontent\_copy

```
$ gcloud container clusters create [YOUR_CLUSTER_NAME] \
    --zone=[ZONE]
```

ステップ 2：kubectl を設定

ターミナルで以下を実行して kubectl を設定します。

Plain textcontent\_copy

```
$ gcloud container clusters get-credentials [YOUR_CLUSTER_NAME] --zone [ZONE]
```

これでクラスターにアクセスできるようになります。

ステップ 3：サンプル Pod を作成

以下の YAML ファイルを作成し、Pod をデプロイします。

sample-pod.yaml

Plain textcontent\_copy

```
apiVersion: v1
kind: Pod
metadata:
  name: sample-pod
spec:
  containers:
  - name: nginx
    image: nginx:1.27
```

Plain textcontent\_copy

```
kubectl apply -f sample-pod.yaml
```

ステップ 4：ライフサイクルを確認

1\. Pod の状態を確認する：

Plain textcontent\_copy

```
watch "kubectl get pod sample-pod -o yaml | grep 'phase:'"
```

状態が Pendding -> Running に変わるを確認できるはずです

※より詳細なステータスを確認したい場合は `kubectl get pod` コマンドを使ってください

2\. Pod を削除して Succeeded を確認

Plain textcontent\_copy

```
kubectl delete pod sample-pod
```

状態が Running -> Succeeded に変わるを確認できるはずです

3\. Restart policy を設定

Pod の spec に restartPolicy を指定することで、失敗時の挙動を変更できます。

-   Always（デフォルト）
    
    -   終了後にコンテナを自動的に再起動します。
-   OnFailure
    
    -   エラーで終了した場合にのみコンテナを再起動します（終了ステータスがゼロ以外）。
-   Never
    
    -   終了したコンテナを自動的に再起動しません。

failed-sample-pod.yaml

Plain textcontent\_copy

```
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 を確認

Plain textcontent\_copy

```
kubectl apply -f failed-sample-pod.yaml

※終わったら以下を実行
kubectl delete pod sample-pod
```

## Pod ライフサイクルの活用例

-   Pending で止まる場合のトラブルシューティング
    
-   リソース不足、スケジューリングポリシーなどを確認
    
-   Failed の原因調査
    
-   ログ確認：
    

Plain textcontent\_copy

```
kubectl logs sample-pod
```

## まとめ

Kubernetes の Pod のライフサイクルを理解することは、運用やトラブルシューティングに役立ちます。

また、GKE などのクラウドサービスを使うことで簡単に検証や実験ができます。

## この記事を書いた人

[![](/_astro/noicon.CTHOhNiB_Z24aAgM.webp)](/authors/yu-sato/)

### [yu.sato](/authors/yu-sato/)

yu.satoのプロフィールと執筆記事をご覧いただけます。

[プロフィールと記事一覧](/authors/yu-sato/)