TT Lab
はじめる
学ぶ 学習パス コース

CKAD — Kubernetesアプリケーション開発者

アプリケーションが実際に生きる姿を見る

TT Labで続きを見る

このラボはアプリケーションが実際に動くクラスターで行います

VMの中に本物のk3sが起動しています。kubeletがプローブを実際に実行し、Jobが実際に完了し、ConfigMapが実際にマウントされます。

CKADコースの他のラボが動く疑似クラスターでは、これらのどれも起こりません。プローブを設定しても動かず、Jobを作っても完了しません。

最初の起動には2分ほどかかります。

目標

3種類のプローブ、JobとCronJob、QoS、設定の注入を動作で確認します。

なぜ重要なのか

CKADでよく間違えるのは、文法ではなく動作の違いです。

ステップ

すべてのリソースはネームスペース(ckad)に作成します。

  1. 起動に20秒ほどかかるコンテナ(slow-start)に、短いlivenessProbeとstartupProbeを一緒に設定し、再起動なしで準備が整う様子を記録してください(保存先: /root/ckad/startup.txt)。
  2. Deployment(api、レプリカ3)とServiceを作成します。ただし1つのPodだけreadinessが失敗するようにして、エンドポイントから外れる様子を記録してください(保存先: /root/ckad/endpoints.txt)。
  3. Job(batch、completions: 3、parallelismを指定)が実際に完了する様子を記録してください(保存先: /root/ckad/job.txt)。
  4. Job(doomed)がbackoffLimitを使い切ってFailedになる様子を記録してください(保存先: /root/ckad/backoff.txt)。
  5. CronJob(tick)を作成して実際に1回以上動かし、記録してください(保存先: /root/ckad/cronjob.txt)。concurrencyPolicyも決めます。
  6. 3つのPod(qos-guaranteed、qos-burstable、qos-besteffort)でQoSクラス3種類を作成し、記録してください(保存先: /root/ckad/qos.txt)。
  7. Pod(cfg-pod)にConfigMapをボリュームと環境変数の両方で注入し、Podの中でどう見えるかを記録してください(保存先: /root/ckad/config.txt)。
  8. レポートファイル(/root/ckad/report.md)に、startup_restarts=、job_completions=、evicted_first=の3行と説明を書いてください。

参考

起動が遅いとき

起動に20秒ほどかかるコンテナ(slow-start)に、短いlivenessProbeとstartupProbeを一緒に設定し、再起動なしで準備が整う様子を記録してください(保存先: /root/ckad/startup.txt)。

短いlivenessだけを設定すると、起動が終わる前に死んでしまいます。startupProbeがそれを後回しにしてくれます。

準備ができていないPodは外れる

Deployment(api、レプリカ3)とServiceを作成します。ただし1つのPodだけreadinessが失敗するようにして、エンドポイントから外れる様子を記録してください(保存先: /root/ckad/endpoints.txt)。

3つのレプリカのうち1つだけreadinessが失敗するようにして、EndpointSliceを確認してください。

completionsとparallelism

Job(batch、completions: 3、parallelismを指定)が実際に完了する様子を記録してください(保存先: /root/ckad/job.txt)。

completionsは何回成功する必要があるか、parallelismはいくつを同時に動かすか、です。

Jobはいつあきらめるのか

Job(doomed)がbackoffLimitを使い切ってFailedになる様子を記録してください(保存先: /root/ckad/backoff.txt)。

backoffLimitの回数だけ再試行したあと、Failed条件が付きます。小さく設定すれば待たずに済みます。

実行が重なるとき

CronJob(tick)を作成して実際に1回以上動かし、記録してください(保存先: /root/ckad/cronjob.txt)。concurrencyPolicyも決めます。

*/1 * * * *で1分ごとに動かし、1回以上実行されるのを待ってください。concurrencyPolicyも決めます。

リソースが足りないとき、誰が先に追い出されるのか

3つのPod(qos-guaranteed、qos-burstable、qos-besteffort)でQoSクラス3種類を作成し、記録してください(保存先: /root/ckad/qos.txt)。

QoSは直接指定するのではなく、requests/limitsの組み合わせで決まります。

ボリュームと環境変数は違う

Pod(cfg-pod)にConfigMapをボリュームと環境変数の両方で注入し、Podの中でどう見えるかを記録してください(保存先: /root/ckad/config.txt)。

同じConfigMapを2つの方式で注入し、Podの中でどう見えるかを比べてください。

何を学んだのか

レポートファイル(/root/ckad/report.md)に、startup_restarts=、job_completions=、evicted_first=の3行と説明を書いてください。

startup_restarts=、job_completions=、evicted_first=の3行と説明を書いてください。