Kubernetes入門:メタデータとスペックの書き方

 Kubernetesにおける定義ファイル(マニフェストファイル)には、リソースの詳細な設定を記述する必要があります。特にメタデータ(metadata)とスペック(spec)の記述が重要です。これらの項目を適切に記述することで、Kubernetesがリソースを正しく管理し、システムの状態を保ちます。ここでは、Podやデプロイメント、サービスのメタデータとスペックの書き方を解説します。

定義ファイルの大項目

  • apiVersion
    APIバージョンを記述します。リソースが属するAPIのバージョンです。
  • kind
    リソースの種類を指定します。Pod、Service、Deploymentなどがここに入ります。
  • metadata
    リソースのメタ情報を記述します。名前やラベル、名前空間などが含まれます。
  • spec
    リソースの仕様を定義します。リソースごとに異なる設定項目が含まれます。

metadataとspecの書き方

ここでは、大項目③と④の中項目と小項目について詳しく解説します。

「metadata」の中項目と小項目

metadata:
  name: ←(中項目)Podの名前
  labels: ←(中項目)ラベル
  • name: リソースの名前を指定します。PodやServiceの識別子として使います。
  • labels: ラベルを使って、リソースを特定の属性に基づいて分類します。たとえば、環境(production、stagingなど)やアプリケーションの名前などを指定します。

「spec」の中項目と小項目

spec:
  containers: ←(中項目)コンテナの構成
  - name: ←(小項目)コンテナの名前
    image: ←(小項目)元にするイメージ
    ports: ←(小項目)使うポート
  • containers: Pod内のコンテナの構成を記述します。
  • name: コンテナの名前を指定します。Pod内の複数コンテナを識別するために使います。
  • image: 使用するコンテナイメージを指定します(たとえば、nginx:latestなど)。
  • ports: コンテナが使用するポートを指定します。

Podの中のボリューム

 Podに含まれる複数のコンテナ間でデータを共有するために使用するのがボリュームです。ボリュームは、Pod内でデータを永続化するためや、ログの出力先を共有するために使います。以下のように、1つのPod内でメインプログラムとログ監視プログラムがそれぞれのコンテナとして動作し、ボリュームを使ってログを共有するケースがあります。

spec:
  volumes:
    - name: log-volume
      emptyDir: {}
  containers:
    - name: main-container
      image: main-image
      volumeMounts:
        - mountPath: /logs
          name: log-volume
    - name: log-monitor-container
      image: log-monitor-image
      volumeMounts:
        - mountPath: /logs
          name: log-volume
  • volumes: ボリュームの定義。
  • volumeMounts: コンテナ内でボリュームをどこにマウントするか指定します。

まとめ

 メタデータやスペックの記述は、Kubernetesでリソースを正しく管理するために非常に重要です。特に、Podやサービス、デプロイメントのメタデータ(名前やラベル)と、コンテナの構成(イメージやポート)をしっかりと定義することで、安定した運用が可能となります。また、ボリュームを使ってデータ共有を適切に設定することも重要なポイントです。

これにより、Kubernetesを使用した効率的なリソース管理が可能となります。