本文へスキップ
BecomeCoder

Kubernetesコース · 第2章 Pod ― 最小の実行単位 · レッスン8

最初のマニフェスト ― Pod を YAML で書く

ブラウザで完結

導入

第1章で「あるべき状態を YAML で宣言する」と学びました。いよいよ、その YAML を初めて書きます。題材は、Web サーバー nginx(エンジンエックス)コンテナを1つ動かすだけの、いちばん簡単な Pod です。

説明

Kubernetes に渡す設定ファイルを マニフェスト(manifest) と呼びます。nginx を1個動かす Pod のマニフェストはこうなります。

apiVersion: v1            # この種類のオブジェクトのAPIバージョン
kind: Pod                 # 作るものの種類(ここではPod)
metadata:
  name: my-nginx          # このPodの名前(クラスタ内で識別に使う)
  labels:
    app: web              # このPodに貼る付箋(レッスン10で活躍)
spec:                     # あるべき中身の定義
  containers:
    - name: nginx         # コンテナの名前
      image: nginx:1.27   # 使うコンテナイメージとバージョン(タグ)
      ports:
        - containerPort: 80   # コンテナが待ち受けるポート番号

各フィールドの意味は次のとおりです。

  • apiVersion … このオブジェクトを扱う API のバージョン。Pod は v1
  • kind … 作るものの種類。ここでは Pod(後の章では Deployment などになる)。
  • metadata.name … Pod の名前。クラスタ内で識別に使う。
  • metadata.labels … Pod に貼る「付箋」(キー=値)。今は app: web を貼っただけだが、レッスン10で束ねる鍵になる。
  • spec … あるべき中身。
  • spec.containers … 入れるコンテナの一覧(配列)。名前・イメージ(nginx:1.27:1.27 はバージョンを指すタグ)・待ち受けポートを指定。

ここで大事なのは、このファイルには**「起動せよ」「その後こうせよ」といった手順が一切書かれていない**ことです。書いてあるのは「こういう Pod が存在する状態にしてほしい」という結果だけ。これが宣言的ということの実感です。このマニフェストを Kubernetes に渡す方法を、次のレッスンで見ます。

実際に動かしてみよう

上がマニフェスト(YAML)エディタ、下が kubectl の端末です。エディタの内容は `manifest.yaml` として保存され、下で `kubectl apply -f manifest.yaml` を実行するとクラスタに反映されます(pod.yaml / deploy.yaml / service.yaml も最初から置いてあります)。`kubectl get pods` / `describe` / `scale` / `rollout` などで結果を確かめましょう(本物のKubernetesではなく、動きを再現した軽量なシミュレータです)。各レッスンは毎回まっさらな状態から始まり、「最初からやり直す」で戻せます。

kubectl(シミュレート)

マニフェスト(YAML)を書いて kubectl コマンドを試せる学習用クラスタを読み込みます(本物のKubernetesではなく、apply/get/describe/scale/rollout などの動きを再現した軽量な自作シミュレータです)。
スクロールして表示された時点でも自動で読み込まれます。