CKA / CKAD 試験を受けました (2022年)

2022年3月・4月に、Kubernetes の認定資格 CKA (Certified Kubernetes Administrator)CKAD (Certified Kubernetes Application Developer) を受験し、合格しました!

勉強方法や試験の様子、実際に試験を受けて感じた Tips をまとめてみました。 これから試験にチャレンジする方の参考になりましたら幸いです。

勉強方法

自分のバックグラウンドとしては、Kubernetes の経験は 4 年半ほどで、また CKA については 2018 年に一度受けたことがありました。 前回取得した CKA の期限が切れたので、今回再受験することにしました。 CKAD は初挑戦です。

Certified Kubernetes Administrator (CKA) 取得した - yukirii blog

昨年の振り返り記事でもちょろっと書きましたが、Certified Kubernetes Administrator (CKA) 試験に挑戦し、無事合格することができました。テクニカルな内容はあまり無いですが、今後 CKA に挑戦する方のために情報を残しておこうと思います。

普段のお仕事で Kubernetes クラスターには触れる機会が多いので、今回は書籍等を利用して 1 からがっつり勉強するという感じではなく、e-Learning で復習をしつつ、模擬問題を解いて手を動かして練習するというやり方で試験対策をしました。

普段利用しているクラスターはマネージドの Kubernetes サービスで、API サーバーや etcd を直接触る機会はありません。 そのため、クラスター マネジメントやトラブルシューティング系の問題の対策のために、仮想マシンで検証クラスターを構築してオペレーションを確認しました。

e-Learning

Linux Foundation の提供する e-Learning を受講しました。 CKA / CKAD の出題範囲を踏まえた内容となっており、セクションごとに出題されるクイズや、簡単な模擬問題で理解度を確認できるようになっています。

1 から Kubernetes の勉強を始めるという方の場合、この e-Learning のみで学習をすすめるのは難しいと感じました。 すでにある程度 Kubernetes を知っている方であれば、復習用の教材として利用できるかと思います。

模擬問題

CKA / CKAD 試験を申し込むと、Killer Shell という試験シミュレーターの受講権が付属してきます。

このシミュレーターでは、実際の試験と同様にブラウザー上に問題文とターミナル画面が表示され、Kubernetes クラスターを操作しながら模擬問題が解けるようになっています。 解いた問題は自動的に採点されます。 また、問題ごとに解き方の解説も付いています。

問題数は、模擬問題 25 問 + エクストラ問題 2 問 + プレビュー問題 3 問 (Killer Shell 購入前のお試し問題) です。 CKA / CKAD それぞれで2 セッション分の受講権が付与されます。 一度アクティベーションをすると 36 時間は自由に Kubernetes クラスターを操作して問題にチャレンジできます。 問題内容は 2 セッションで共通の問題です。

Killer Shell の問題は、実際の CKA / CKAD 試験よりも難しく作られています。 CKA 向けの模擬問題では、初回はすべて解き終わるのに 4 時間もかかってしまいました。 CKA 模擬問題の 2 回目や CKAD の模擬問題では、なんとか 2 時間以内に 25 問を解き終ることができました。

このほか、GitHub で公開されている CKAD を想定した問題集を一通りやりました。

GitHub - dgkanatsios/CKAD-exercises: A set of exercises to prepare for Certified Kubernetes Application Developer exam by Cloud Native Computing Foundation

A set of exercises to prepare for Certified Kubernetes Application Developer exam by Cloud Native Computing Foundation - GitHub - dgkanatsios/CKAD-exercises: A set of exercises to prepare for Certi...

また、ブラウザー上でのコマンド操作に慣れることと、自動採点ありの問題にチャレンジしたかったので、O’Reilly や Katacoda のハンズオン Lab の問題で練習をしました。

Playlists

This collection of 33 interactive scenarios provides hands-on training that enhances the exam prep in the Certified Kubernetes Application Developer (CKAD) Study Guide by Ben Muschko, which walks you through the topics you need to understand for the CKAD exam.

Katacoda - Coming Soon | Katacoda

Learn the latest technologies with our hands-on labs

検証クラスター

Vagrant で仮想マシンを作成し、kubeadm を使ったクラスター構築やアップグレードの操作を確認しました。 クラスターの構築方法は別の記事に書いたので、もしよければご参考にしてください。

Vagrant と kubeadm で Kubernetes クラスターをつくる - yukirii blog

勉強用の Kubernetes クラスターを kubeadm でつくりました。ローカル PC 上に Vagrant で仮想マシンを起動して、ノードとして利用します。単にコンテナーのデプロイを試したいだけであれば、Docker Desktop や Kind を利用するのが早いと思いますが、Kubernetes コンポーネントの設定もふくめて色々触りながら勉強したかったので、VM を用意してクラスターをつくることにしました。

kubeadm join はノードをクラスターにどのように追加しているのか - yukirii blog

kubeadm では、kubeadm join コマンドの実行で、新しいノードの追加がかんたんにできます。 このとき何が行われているのかを調べてみました。

Kubernetes The Hard Way も一応やっておきました。 Kubernetes The Hard Way on Azure を参考に、Azure 環境でクラスターを構築しました。

learning-k8s/hard-way-on-azure at master · yukirii/learning-k8s

learning Kubernetes, prepare for Certified Kubernetes Administrator (CKA) - yukirii/learning-k8s

試験対策としては Kubernetes The Hard Way は必須ではなく、kubeadm を使ったクラスター操作ができれば十分です。 とはいえ、クラスター内でどのようなコンポーネントが動いていて、設定や証明書のファイルにはどんなものが存在しているのかといった知識は、CKA の問題を解く上で役立つことはあるので、もし時間と余力があれば試してみましょう。

受験環境と試験前の様子

試験はオンラインで実施され、試験中は Web カメラとマイクで試験官に見張られます。

自宅は物が多すぎて、試験を受けられる状態まで片付けるのは不可能だと思ったので、会社のオフィスで受験することにしました。 万が一、誰かが来たときに試験中とわかるように掲示をしておきました。

PC スタンドの上にノート PC を置き、Bluetooth のキーボードとマウスを使用しました。 ラベルが貼られていないペットボトルが持ち込み可能です。

開始前に、Web カメラで部屋全体の様子と机の上を映すように指示があります。 机のチェックでは、CKA / CKAD の両方で、キーボードを持ち上げて下に何も無いことを見せるように言われました。 そのほか、部屋や机については特段の指摘はありませんでした。

試験では外部モニターの利用ができますが、今回は使用しないことにしました。 モニターを接続すると PC が重くなり、ファンがずっと回っていてうるさいためです。

また、試験中は外部モニターを含め、すべてのデスクトップ画面を試験官に共有する必要があります。 前回 2018 年に受けたときには、画面共有が確認できず開始が遅れるという経験がありました。 モニターが認識されないなどのトラブルを防ぎたいという理由もあり、今回は使用しないことにしました。

身分証はパスポートを提示しました。

そのほか、試験の開始前には、Google Chrome 以外のアプリケーションが起動していないことを見せるために、タスク マネージャーを開くように指示がありました。

CKA 試験

CKA-JP を申し込みました。試験官とのやりとりは日本語でした。

スケジュールは午前 11 時からの枠を予約しました。 10 分ほど前から試験ページに入ることができ、部屋のチェックなどの確認がはじまりました。 10 分ほどで完了したので、試験はほぼ時間通りのスタートとなりました。

問題数は 17 問でした。 少し急ぎ目のペースで順に問題を解いていき、1 週し終わったところでちょうど 1 時間ほどが経過していました。 その後は見直しをして、採点要件となっているリソース名が正しいかどうかや、アプリケーションにアクセスができるかなどを確かめました。

CKA では、問題で指示されていない Pod を誤って削除するというミスをしてしまいました。 1 つ前の問題で登場した Pod を、次の問題でも操作対象の Pod だと混同して間違えました。 Pod の存在自体は採点要件として問われていなかったので、点数への影響はなかったとは思うのですが (おそらく…)、やらかした瞬間は結構焦りました。

クラスター上のリソースを変更したり削除したりするときは、対象の context やリソース名が正しいか、よくよく確認が必要だと感じました。 リソース復旧ができるという保証は無いですが、万が一に備えて、操作をする前に kubectl get -o yaml でバックアップをとるよう練習しておきましょう。 あとで問題の見直しをするときに、どこを変更したのかの確認にも活用できそうです。

CKAD 試験

CKAD-JP を申し込んだのですが、試験官とのやりとりは英語でした。 問題文は、日本語 / 英語 / 中国語を自由に切り替えられます。

こちらも、午前 11 時からのスケジュールを予約しました。 試験前の確認がゆっくりと進められたため、予約時間から 15 分ほど遅れての試験スタートとなりました。 なんとなく、試験官がキリのいい時間にスタートできるよう開始タイミングを調整してくれているような雰囲気はありました。

問題数は 17 問でした。 時間がかかりそうな問題にはフラグを付けながら、飛ばし飛ばしで進めて 1 時間ほどでした。 そのあと、飛ばした問題の解答と、問題の見直しを 2 週やって、最後に 15 分ほど余裕があるといった時間配分でした。

クラスター上の既存のリソースを更新する必要がある問題では、デプロイに使用されたオリジナルの YAML がファイルとして提供される場合もありました。

個人的な Tips

試験対策と本番を振り返って思ったことを書いてみます。

Killer Shell や本番の試験環境では alias k='kubectl' が設定済みなので、自分で追加しなくても k コマンドが利用できます。

コマンドのエイリアスについては --dry-run=client -o yaml も変数化しておく事例をよく見かけます。 しかし、普段のクラスター操作では利用しておらず、試験中にトラブルの元になるのを避けたかったので、これはやりませんでした。 都度 --dry-run=client -o yaml を打ち込んでも十分な時間はあります。

dry-run で出力した YAML は、クラスターにデプロイする前に、採点要件を満たすように忘れずに修正されているか確認しましょう。 自分の場合、コンテナー名やラベル名の修正・追加忘れや、kubectl expose で出力した Service の名前が修正されていないといったミスを練習中によくやってしまいました。

Vim の設定は覚えておき、試験がスタートしたらまずはじめに ~/.vimrc に打ち込んでしまいましょう。 これがないと YAML ファイルの編集が非常にやりづらいです。 自分はモニタに付箋で貼り付けて、毎日見て覚えました。

試験中は Kubernetes 公式のドキュメントが参照できます。 参照する予定のページは、ブラウザのブックマークに入れておきます。 Chrome では、アドレス バーにキーワードを打ち込むと、キーワードに該当する名前のブックマークが表示されます。 目的のページがアドレス バーからすぐに開けるので、作業速度の観点からドキュメントの検索機能を使うより効率が良いと判断しました。 誤って Google 検索してしまわないように注意!

Killer Shell で模擬問題を解きつつ、そのとき参照したページをブックマークしていくと、あとで追加し忘れることがなくて安心です。

kubectl コマンドのヘルプは kubectl create configmap -h | grep kubectl のように、kubectl をキーワードに grep で表示を絞り込むと、コマンド実行例だけを一覧で確認できます。 ConfigMap などのオブジェクト作成をする場面で、オプション名を含むコマンド例を見たいときに便利です。

また、kubectl explain コマンドが使えると、フィールドの名前を思い出したり、YAML ファイル内での記述位置の確認に活用できます。 パイプで grepless に結果を渡すと効率よく確認できます。

試験本番に挑む前には、Killer Shell でシミュレーターの問題にチャレンジしておきましょう。 問題内容は 2 セッションで共通の内容ですが、理解度の確認と、ブラウザー操作に慣れるために 2 回ともやっておくと安心です。

さいごに

CKA / CAKD 共に、出題はカリキュラムの記載通りという印象でした。 カリキュラム記載の項目ごとに、どんな出題がされるか、なんとなく想像できる状態まで理解できていれば良さそうです。 少なくとも、どのドキュメントのページを見ればよいか検討がつく状態にしておきましょう。

ということで、無事に両方の試験を Pass することができました!

Exam Date Exam Results Score Kubernetes Version Credly Badge
2022/03/22 CKA Pass 90 v1.23 Badge
2022/04/03 CKAD Pass 95 v1.23 Badge

試験に合格すると PDF の認定証と Credly のバッジをもらえます。 CKA のバッジは 1 週間経っても発行されなかったのですが、CNCF に問い合わせたらすぐに発行してくれました。

CKS (Certified Kubernetes Security Specialist) の受験資格を得ましたので、今度は CKS に挑戦します!


comments powered by Disqus