Docker & DevOps Fundamentals · レッスン

Pod:最小単位

Kubernetesの基本構成要素であるPodについて学び、Podの定義と管理方法を理解します。

レッスン 2/411 ステップ

「Pod:最小単位」はCoddyKit上の無料Docker & DevOps Fundamentalsレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDocker & DevOps Fundamentals学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Docker & DevOps Fundamentalsコースには全4レッスンが含まれています。

Kubernetes Pod とは

Kubernetes では、デプロイできる最小かつ基本的な単位がPodです。Pod は、1 つ以上のコンテナを収容する 1 軒の「家」のようなものだと考えてください。

Pod はコンテナを抽象化したものです。クラスター内で実行されるプロセスを表し、アプリケーションコンテナ、ストレージリソース、固有のネットワーク IP、およびコンテナの実行方法を制御するオプションをカプセル化します。

Pod:最小単位 — イラスト1

Pod とコンテナの違い

「すでにコンテナがあるのに、なぜ Pod が必要なのですか?」と思うかもしれません。重要な違いは次のとおりです。

  • コンテナ(Docker コンテナなど)は、アプリケーションとその依存関係をパッケージ化したものです。
  • Podは、1 つ以上のコンテナを包み、共有リソースと単一のネットワーク ID を提供する Kubernetes の抽象化です。

コンテナが実際に実行されるものなのに対し、Pod は Kubernetes がそれらの実行単位を管理・オーケストレーションするための仕組みです。

Pod を使う理由

Pod には、次のような重要な利点があります。

  • 共有ネットワーク名前空間:Pod 内のすべてのコンテナが同じ IP アドレスとネットワークポートを共有します。localhostを使って互いに通信できます。
  • 共有ストレージ:Pod はストレージボリュームを共有できるため、同じ Pod 内のコンテナから共通のデータにアクセスできます。
  • 同一ノードへの配置と同時スケジューリング:密接に連携する必要があるコンテナ(アプリケーションとログ収集エージェントなど)は、同じノードで実行されることが保証され、常に一緒にスケジューリングされます。

Pod 定義の構成

Pod は YAML 設定ファイルを使って定義します。主な構成要素は次のとおりです。

  • apiVersion:Kubernetes API のバージョン(例:v1)を指定します。
  • kind:Kubernetes オブジェクトの種類で、ここではPodです。
  • metadata:Pod のnameやlabelsなどの情報です。
  • spec:実行するcontainers、volumes、その他の設定を含む、Pod の望ましい状態を指定します。

単一コンテナ Pod の定義

ほとんどの Pod は単一のコンテナで構成されます。これは単純なアプリケーションでよく使われます。次は、Nginx Web サーバーを実行する Pod の基本的な YAML 定義です。

apiVersion: v1
kind: Pod
metadata:
  name: my-nginx-pod
  labels:
    app: webserver
spec:
  containers:
  - name: nginx-container
    image: nginx:latest
    ports:
    - containerPort: 80

最初の Pod をデプロイ

YAML ファイルから Pod を作成するには、kubectl applyコマンドを使います。このコマンドにより、定義に基づいてリソースが作成または更新されます。

先ほどの Nginx Pod の定義をnginx-pod.yamlとして保存したとします。次のようにデプロイします。

  • kubectl apply -f nginx-pod.yaml

Kubernetes はその後、この Pod がいずれかのワーカーノードで実行されるようにスケジューリングします。

Pod の確認:Get と Describe

デプロイしたら、Pod の状態を確認します。ここでは、重要なkubectlコマンドを 2 つ紹介します。

  • kubectl get pods:現在の namespace にあるすべての Pod を一覧表示し、名前、状態、ノードを確認できます。
  • kubectl describe pod <pod-name>:指定した Pod のイベント、コンテナの状態、割り当てられたリソースなど、詳細な情報を表示します。

これらのコマンドは、監視やトラブルシューティングに欠かせません。

複数コンテナ Pod:サイドカー

単一コンテナの Pod が一般的ですが、複数コンテナ Podが適している場合もあります。代表的な例がサイドカーパターンです。

サイドカーコンテナは、同じ Pod 内でメインのアプリケーションコンテナと一緒に実行され、次のような補助的なタスクを行います。

  • ログ収集および監視エージェント
  • データ同期
  • ネットワークトラフィックのプロキシ

Pod のネットワークとストレージを共有するため、効率的に通信できます。

例:複数コンテナ Pod

次は、複数コンテナ Pod の例です。Nginx Web サーバーと、共有ボリュームにログを書き込むbusyboxサイドカーコンテナで構成されています。

apiVersion: v1
kind: Pod
metadata:
  name: multi-container-pod
spec:
  volumes:
  - name: shared-log-volume
    emptyDir: {}
  containers:
  - name: web-server
    image: nginx:latest
    ports:
    - containerPort: 80
    volumeMounts:
    - name: shared-log-volume
      mountPath: /var/log/nginx
  - name: log-writer
    image: busybox:latest
    command: ["/bin/sh", "-c", "while true; do echo 'Hello from sidecar!' >> /var/log/app.log; sleep 5; done"]
    volumeMounts:
    - name: shared-log-volume
      mountPath: /var/log/app

Pod の理解度チェック

Kubernetes Pod について、正しい記述はどれでしょうか?

まとめ:Pod は中核となる単位

Kubernetes のPodについて学びました。Pod は、クラスター内のアプリケーションを構成する基本単位です。

  • Pod は 1 つ以上のコンテナをカプセル化し、共有リソースを提供します。
  • ネットワークとストレージを共有し、関連するコンテナを同じ場所で実行することを保証します。
  • YAML を使って Pod を定義し、kubectl applyでデプロイします。
  • kubectl get podsとkubectl describe podを使って監視できます。

次は、クラスターを操作するためのkubectlコマンドをさらに学びます!

無料で開始

AI チューターと学ぶ Docker & DevOps Fundamentals — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
12
レッスン
48

よくある質問

「Pod:最小単位」レッスンは無料ですか?

はい。「Pod:最小単位」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Docker & DevOps Fundamentalsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Docker & DevOps Fundamentalsコースには全4レッスンが含まれています。

「Pod:最小単位」で何を学びますか?

Kubernetesの基本構成要素であるPodについて学び、Podの定義と管理方法を理解します。 ブラウザで直接実行するハンズオンコードでDocker & DevOps Fundamentalsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Docker & DevOps Fundamentalsを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDocker & DevOps Fundamentalsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「Pod:最小単位」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDocker & DevOps Fundamentalsレッスンでコードを書いて実行できますか?

はい。すべてのDocker & DevOps Fundamentalsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Kubernetesアーキテクチャ
  2. Pod:最小単位
  3. kubectlコマンドの基礎
  4. 整理のためのNamespaceとLabel
← Docker & DevOps Fundamentalsに戻る