0Pricing
DevOps Bootcamp · レッスン

マルチコンテナPod(サイドカー)

サイドカーコンテナなど、1つのPod内で複数のコンテナを同居させて実行するパターンを学びます。

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

単一コンテナの先へ

ここまでは、Podを単一のコンテナを実行するものとして考えてきました。しかし、アプリケーションに補助プロセスが必要な場合はどうすればよいでしょうか?

Kubernetesでは、Pod内で複数のコンテナを実行できます。これらのコンテナは常に同じ場所に配置され、リソースを共有します。

マルチコンテナPodを使う理由

1つのPodで複数のコンテナを実行する方法は、密接に結合されたアプリケーションで、次のリソースを共有する必要がある場合に適しています。

  • ネットワーク名前空間(同じIPアドレスを使い、localhost経由で通信できます)
  • ストレージボリューム
  • ライフサイクル(同時に起動、停止、再起動します)

これにより、関連するプロセスを1つの管理単位として扱えます。

サイドカーパターンの解説

よく使われる設計にサイドカーパターンがあります。これは、「サイドカー」コンテナをメインアプリケーションのコンテナと並行して実行する方法です。

メインアプリケーション自体を変更せずに、その機能を拡張または強化できます。便利な相棒のようなものだと考えてください。

サイドカーの利用例

サイドカーは非常に柔軟に利用できます。一般的な用途には次のようなものがあります。

  • ログ収集:サイドカーがメインアプリケーションのログを収集し、中央のログサービスに送信します。
  • プロキシ:サイドカーが、セキュリティ(mTLS)やトラフィック管理などのネットワークプロキシ機能を提供します。
  • ファイル同期:サイドカーが、共有ボリュームを設定やデータで最新の状態に保ちます。

2つのコンテナを持つPod(YAML)

PodのYAMLマニフェストで複数のコンテナを定義する方法を見てみましょう。各コンテナはcontainers配列の要素になります。

spec.containersの下に、nginx-proxyコンテナとmain-appコンテナが定義されていることに注目してください。

apiVersion: v1
kind: Pod
metadata:
  name: multi-container-pod
spec:
  containers:
  - name: nginx-proxy
    image: nginx:latest
    ports:
    - containerPort: 80
  - name: main-app
    image: busybox:latest
    command: ["sh", "-c", "echo 'Hello from main app!' && sleep 3600"]

共有ストレージ:emptyDir

同じPod内のコンテナは、KubernetesのVolumesを使ってデータを共有できます。簡単な方法として、emptyDirボリュームを使用できます。

emptyDirボリュームは、Podがノードに割り当てられたときに作成され、そのPodがそのノード上で実行されている間存在します。一時的なストレージです。

例:ログ収集サイドカー

メインアプリケーションがファイルにログを出力するとします。サイドカーはそのログファイルを読み取り、ログサービスに送信できます。

これにより、ログ処理のロジックをメインアプリケーションから分離でき、アプリケーションをシンプルで本来の機能に集中した状態に保てます。

ログ収集サイドカーのYAML(パート1)

これが、ログ収集の例で使用するYAMLです。log-volumeという名前のemptyDirボリュームを定義し、両方のコンテナでこのボリュームをマウントします。

main-appコンテナは、共有ボリューム内の/var/log/app.logにログメッセージを書き込みます。

apiVersion: v1
kind: Pod
metadata:
  name: log-collector-pod
spec:
  volumes:
  - name: log-volume
    emptyDir: {}
  containers:
  - name: main-app
    image: busybox:latest
    command: ["sh", "-c", "while true; do echo $(date) 'Main app log entry' >> /var/log/app.log; sleep 1; done"]
    volumeMounts:
    - name: log-volume
      mountPath: /var/log

ログ収集サイドカーのYAML(パート2)

次に、log-sidecarコンテナが同じlog-volumeをマウントします。その後、tail -fを使って、メインアプリケーションが書き込むログファイルを継続的に読み取ります。

実際の環境では、このサイドカーがログを処理し、ElasticsearchやSplunkなどのログシステムに送信します。

apiVersion: v1
kind: Pod
metadata:
  name: log-collector-pod # Same Pod as before
spec:
  volumes:
  - name: log-volume
    emptyDir: {}
  containers:
  - name: main-app
    image: busybox:latest
    command: ["sh", "-c", "while true; do echo $(date) 'Main app log entry' >> /var/log/app.log; sleep 1; done"]
    volumeMounts:
    - name: log-volume
      mountPath: /var/log
  - name: log-sidecar
    image: busybox:latest
    command: ["sh", "-c", "tail -f /var/log/app.log"]
    volumeMounts:
    - name: log-volume
      mountPath: /var/log

クイックチェック:サイドカーの利点

マルチコンテナPodは、特にサイドカーパターンと組み合わせることで、複雑なアプリケーションの管理にいくつかの利点をもたらします。

サイドカーコンテナを使用する主な利点は、次のうちどれでしょうか?

振り返り:マルチコンテナPod

よくできました。マルチコンテナPodと、強力なサイドカーパターンについて学びました。

  • Podでは、ネットワークとストレージを共有する複数のコンテナをホストできます。
  • サイドカーパターンは、メインアプリケーションの機能を拡張または強化するのに役立ちます。
  • 一般的な用途には、ログ収集、プロキシ、データ同期があります。
  • emptyDirボリュームは、Pod内で共有できる一時ストレージを提供します。

このパターンは、Kubernetesで堅牢かつモジュール化されたアプリケーションを構築するうえで重要です。

よくある質問

「マルチコンテナPod(サイドカー)」レッスンは無料ですか?

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

「マルチコンテナPod(サイドカー)」で何を学びますか?

サイドカーコンテナなど、1つのPod内で複数のコンテナを同居させて実行するパターンを学びます。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「マルチコンテナPod(サイドカー)」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. Pod:最小単位
  2. Podのライフサイクルと状態
  3. マルチコンテナPod(サイドカー)
  4. Initコンテナと起動順序
← DevOps Bootcampに戻る