Kubernetes ハンズオン演習
ホーム
ホーム
  • 0. ラボの使い方
  • 1. kubectl コマンドを使ってみる
  • 2. マニフェストファイルによる Pod の操作
  • 3. Deployment
  • 4. Service によるアプリケーションの公開
  • 5. デプロイ戦略
  • 6. PersistentVolume と StatefulSet の使用

2. マニフェスト ファイルによる Pod の操作

このラボでは、YAML の記法やマニフェスト ファイルによる Pod の作成について学習します。

テキストを参照しながら各問題にチャレンジしてください。
必要があればウェブで調べても構いません。

ステップ 1: 問題 1/17

YAML でキーとバリューを区切るために使われるのは以下のどれですか。

  1. ハイフン ( - )
  2. セミコロン ( ; )
  3. カンマ ( , )
  4. コロン ( : )
Answer

コロン ( : )

ステップ 2: 問題 2/15

以下の YAML スニペットに配列のキーはいくつありますか。

Fruits:
  - Orange
  - Apple
  - Banana
Vegetables:
  - Carrot
  - CauliFlower
  - Tomato
  1. 8
  2. 2
  3. 6
  4. 3
Answer

2

ステップ 3: 問題 3/15

以下のうち YAML についての正しい記述はどれですか。

  1. A. 辞書 (マッピング) は順序なしのコレクションであるのに対して配列 (シーケンス) は順序ありのコレクションである
  2. B. 辞書 (マッピング) は順序ありのコレクションであるのに対して配列 (シーケンス) は順序なしのコレクションである
  3. C. 辞書 (マッピング) と配列 (シーケンス) は両方とも順序ありのコレクションである
  4. D. 辞書 (マッピング) と配列 (シーケンス) は両方とも順序なしのコレクションである
Answer

A. 辞書 (マッピング) は順序なしのコレクションであるのに対して配列 (シーケンス) は順序ありのコレクションである

ステップ 4: 問題 4/15

/root/playbooks/ ディレクトリの下に question4.yaml という yaml ファイルが用意されています。
このファイルには property1 というキーと value1 というバリューが記載されています。
このファイルに property2 というキーと value2 というバリューを追加してください。

Hints

/root/playbooks/question4.yaml を編集し、property2 というキーと value2 というバリューのペアを追加します。

Solution

以下の内容にファイルを更新します。

property1: value1
property2: value2

ステップ 5: 問題 5/15

/root/playbooks/ ディレクトリの下に question5.yaml という yaml ファイルが用意されています。
このファイルに以下の情報が保存されるように、必要なプロパティを追加してください。

  • name = apple
  • color = red
  • weight = 90g
Solution

/root/playbooks/question5.yaml を以下の内容に更新します。

name: apple
color: red
weight: 90g

ステップ 6: 問題 6/15

/root/playbooks/ ディレクトリの下に question6.yaml という yaml ファイルが用意されています。
このファイルには employee という名前の辞書が保存されています。
以下の従業員情報が保存されるように必要なプロパティを追加してください。

Key/PropertyValue
namejohn
gendermale
age24
Solution

/root/playbooks/question6.yaml を以下の内容に更新します。

employee:
  name: john
  gender: male
  age: 24

ステップ 7: 問題 7/15

/root/playbooks/ ディレクトリの下に question7.yaml という yaml ファイルが用意されています。
このファイルの従業員情報に、name や gender 以外に以下の情報を保存するように、address という辞書を追加してください。

Key/PropertyValue
cityshinjuku
prefecturetokyo
countryjapan
Solution

/root/playbooks/question7.yaml を以下の内容に更新します。

employee:
  name: john
  gender: male
  age: 24
  address:
    city: shinjuku
    prefecture: tokyo
    country: japan

ステップ 8: 問題 8/15

/root/playbooks/ ディレクトリの下に question8.yaml という yaml ファイルが用意されています。
このファイルには配列の要素として apple が 1 つだけ保存されています。
合計 4 つの apple が保存されるように配列の要素を追加してください。

Solution

/root/playbooks/question8.yaml を以下の内容に更新します。

- apple
- apple
- apple
- apple

ステップ 9: 問題 9/15

/root/playbooks/ ディレクトリの下に question9.yaml という yaml ファイルが用意されています。
このファイルに apple orange banana についての情報を辞書の配列として保存します。
apple と同じように orange と banana について以下の情報を追加してください。

orange
colororange
weight90g
banana
coloryellow
weight150g
Solution

/root/playbooks/question9.yaml を以下の内容に更新します。

- name: apple
  color: red
  weight: 100g
- name: orange
  color: orange
  weight: 90g
- name: banana
  color: yellow
  weight: 150g

ステップ 10: 問題 10/15

/root/playbooks/ ディレクトリの下に question10.yaml という yaml ファイルが用意されています。
このファイルに複数の従業員情報を記録できるようにしたいです。
employee という名前の辞書を、employees (複数形) という名前の配列に書き直してください。

Solution

/root/playbooks/question10.yaml を以下の内容に更新します。

employees:
  - name: john
    gender: male
    age: 24

ステップ 11: 問題 11/15

/root/playbooks/ ディレクトリの下に question11.yaml という yaml ファイルが用意されています。
このファイルには、設問 10 で更新した内容と同じ内容が含まれています。
以下の内容で 2 人目の従業員の情報を追加してください。

Key/PropertyValue
namesarah
genderfemale
age28
Solution

/root/playbooks/question11.yaml を以下の内容に更新します。

employees:
  - name: john
    gender: male
    age: 24
  - name: sarah
    gender: female
    age: 28

ステップ 12: 問題 12/15

/root/playbooks/ ディレクトリの下に question12.yaml という yaml ファイルが用意されています。
このファイルに以下の給与明細 (payslips) の情報を追加してください。
住所 (address) は辞書ですが、給与明細 (payslips) は各月 (month) とその金額 (amount) を要素にした配列で記載してください。

payslips

monthamount
june1400
july1600
august2400
Solution

/root/playbooks/question12.yaml を以下の内容に更新します。

employee:
  name: john
  gender: male
  age: 24
  address:
    city: edison
    state: "new jersey"
    country: "united states"
  payslips:
    - month: june
      amount: 1400
    - month: july
      amount: 1600
    - month: august
      amount: 2400

ステップ 13: 問題 13/15

次の問題では Pod のマニフェスト ファイルを作成します。
マニフェスト ファイルを一から作成せずに済ませる Tips として、--dry-run=client -o yaml を使用する方法があります。

kubectl run lab-1 --image nginx --dry-run=client -o yaml > lab-1.yaml を実行してみてください。
実際に Pod が作成されることはありませんが、Pod のマニフェスト ファイルが lab-1.yaml に出力されます。lab-1.yaml を開いて、Pod のマニフェスト ファイルを確認してみてください。

このようにベースとなるマニフェスト ファイルを作成して必要なプロパティを追加・削除することで、一から書かずにマニフェスト ファイルを作成することができます。
この方法は Pod だけでなく Deployment などの他のリソースでも使用できます。

また、すでに作成済みの Pod がある場合は、kubectl get pod POD_NAME -o yaml > pod.yaml を実行して、Pod のマニフェスト ファイルを作成することもできます。

ステップ 14: 問題 14/15

redis-definition.yaml という名前のマニフェスト ファイルを作成し、以下の設定で Pod を作成してください。

Pod 名:redis
イメージ:redis123 (不適切なイメージ名ですがこれを指定します)

Hints

マニフェスト ファイルを作成し、kubectl apply コマンドを使用して Pod を作成します。

Solution

kubectl run redis --image=redis123 --dry-run=client -o yaml > redis-definition.yaml を実行し、redis-definition.yaml という名前のマニフェスト ファイルを作成します。
kubectl apply -f redis-definition.yaml を実行し、Pod を作成します。

ステップ 15: 問題 15/15

いま作成した Pod redis のイメージを redis に変更してください。
(イメージを変更して Pod が running 状態になることを確認してください)

Pod 名:redis イメージ:redis

Hints

Pod のマニフェスト ファイルを更新して kubectl apply コマンドを使用するか、kubectl edit コマンドを使用します。

Solution

kubectl edit pod redis を実行してイメージを redis に変更します。
または、redis-definition.yaml でイメージを redis に変更し、kubectl apply -f redis-definition.yaml を実行します。

完了


チャレンジ完了!

お疲れ様でした!

Prev
1. kubectl コマンドを使ってみる
Next
3. Deployment