CKADをさっさと合格するためのTips

Table of Contents

tldr

CKADのテクニックを紹介します

はじめに

この前CKADを受けてみました。 kubernetesは今年から使い初め、試験があることもなにも知らなかったのですが、社内の勉強会で存在を知り、なんとなく受けてみました。 結果2回目でなんとか受かりました。 試験を受けてみてkubernetesの理解と同時にCKAD特有のちょっとしたテクニックも必要かなと感じたので、本記事でそれらをまとめていきます。

f8b7515e-2eb5-a7bb-5285-3cc1c5037351.png

CKADとは

CNCFが運営しているkubernetesを使用する開発者向けの認定試験です。 CKADはCertified Kubernetes Application Developerの略です。 試験内容は

13% – Core Concepts 18% - Configuration 10% - Multi-Container Pods 18% – Observability 20% – Pod Design 13% – Services & Networking 8% – State Persistence

な感じでカテゴリ分けされて配点が割り振られており、「規定のパーセント」以上を取ることができれば、合格になります。「規定のパーセント」は(たぶん)毎回異なりますが、大体60-70点ぐらいです。私が受けた2回はどちらも66%でした。

難易度

そんなに難しくありません。kubernetesのユーザーとして普段kubectlを叩いている開発者なら少しの学習で合格できます。 ちなみに私は4月までは「kubernetes、なにそれ、どっかの島の名前?」という感じで、そこから開発で使いはじめ、kubectl applykubectl getをまあまあ使っている程度でした。

勉強方法

ここからが本題です。 ここからは大分個人的な意見なので、そのつもりで呼んでください。

どうやって勉強したか

とりあえず模擬試験をやってみて、わからなかったら回答を見て、その中で知識が足りなかったらドキュメントとかその他資料にあたるという、至ってシンプルな方法です。 模擬試験は以下を参考にしました。 https://github.com/dgkanatsios/CKAD-exercises ここに書いてある問題を2週して、一回目の試験に挑み、62%で見事に落ちました。 さらに2週して75%で合格しました。

試験で使ったテクニック

やらなかったこと

  • screenとかtmuxとかは使わなかった 使った方が便利だとは思いますが、キーバインドを変えて使っているtmuxのデフォルト設定を覚え直して。。。みたいなことはしませんでした。テスト中余計なつまづきを減らしたかったという思いもあります。

  • 用意されたメモはほとんど使わなかった ターミナルでほとんど完結するので、よくわからなかった問題にあとから戻るために問題番号をメモった程度でした。

kubectlのTips

以下のページを大いに参考にさせていただきました。学習を始める前に呼んだのですが本当に助かりました。 https://github.com/twajr/ckad-prep-notes

各リソースを作成する

テスト中はささっとdeploymentやpodなどをささっと作成する必要があります。ドキュメントを見ていると結構時間を使ってしまいます。 以下のコマンドで各リソースのyamlファイルを作成したり、ただしい書き方かどうかをチェックすることができます。

基本形

# 標準出力
kubectl run nginx --image=nginx --restart=Never --dry-run -o yaml
# ファイルに出力
kubectl run nginx --image=nginx --restart=Never --dry-run -o yaml > mypod.yaml

RUNコマンドでPod, Deployment, job, cronJobの作成

これがとてもテストで役に立ちました。 runコマンドのフラグを追加したりするだけでPod, Deployment, job, cronJobの作成を自由自在にできます。 下記の表に書いた通り、覚え方もとても簡単です。 自信を持って臨んだ1回目の試験でcronJobの作成が出題されたのですが、--scheduleのそれぞれの時間が何を指しいてるのかがわからず落としてしまいました。笑

リソース kubectl run <name> --image=<name> --restartフラグ --scheduleフラグ
deplyoment kubectl run –image=
pod kubectl run –image= –restart=Never
job kubectl run –image= –restart=OnFailure
cronJob kubectl run –image= –restart=OnFailure –schedule="* * * * *"

secretの作成

上記のリソースと同じですが、Secretを作成するときに役に立ちます。

kubectl create secret generic my-secret --from-literal=foo=bar -o yaml --dry-run > my-secret.yaml

実行中のリソースを編集する

テスト中は結構時間がかつかつになります。 例えば、「実行に失敗しているポッドがあるから直せ」という問題があった場合、 yamlファイルを落としてきて、誤った部分を書き直して、kubectl apply -fを叩く といったことはせずに下記コマンドで直接設定を直した方が早いです。

kubectl edit

追加したい設定がspec階層構造のどこに位置しているのかがわからない。

これはテスト中というよりも勉強中の方が多かったのですが、大量の設定項目がspec下に階層的に配置されており、yamlを作成するときに「どこに何を書けばいいんだっけ?」という自体に陥りやすかったです。 そういったときは以下のコマンドで内容を確認することができます。 また、勉強中に「へー、こんなspecがあったのか」と新しい発見ができます。

kubectl explain po.spec
# recursively
kubectl explain po.spec --recursive

最後に

少しでもこれを読んでくださった方々のお役にたてれば嬉しい限りです!