はじめに
Kubernetesの認定資格CKAとCKADに合格しました!
(CKAは23年3月末、CKADは23年4月上旬に認定)
受験にあたり、Udemyの模擬試験やkiller.shの問題を解いたりして本番に向けた対策をするかと思いますが、本番試験の環境はそれらと微妙に異なります。killer.shの環境は本番にかなり近づけて作られているので対策としては非常に有効ですし「事前に必須でやっておくべきもの」ですが、killer.sh環境に慣れたからって実は安心ではないのです。
本記事では、本番試験に向けて是非知っておいて方がよさそうな内容をつらつらと書いてみようと思います。
※両資格の詳細説明、および教材(Udemy,killer.sh)等の説明については割愛させていただきます。
試験前Tips
ディスプレイの拡張は禁止
試験では普段使い慣れたモニターで使いたい方も多いと思いますが、残念ながらノートPC等にモニターを接続してモニター側の画面で試験を行うことはできないようです。
LFのページには具体的に以下のように書かれています。
One active monitor (either built in or external) (NOTE: Dual Monitors are NOT supported)
The Linux Foundation recommends a screen size of 15” or higher to support the ExamUI.
The Linux Foundation recommends a screen resolution of 1080p.
「PCに接続したカメラ」で試験スペースを歩き回ってくまなくカメラ撮影する必要がある制約上、手軽に使えるモニターは「ノートPCのモニター」一択になります。なので極力ディスプレイのサイズが大きいノートPCを試験用に用意していた方が良さそうです。
補足(24/06/17追記)
あくまで「ディスプレイの拡張」がNGなので、「ノートPCの画面は閉じて別の大きなモニターにつなぎ、その画面だけ表示して使う」だったらOKとの情報をいただきました。例えばMacBookの場合、クラムシェルモードを使うとこれを実現可能です。
飲み物は「ラベルを剥がしたペットボトルに入れた水」のみ持ち込み可
条件がかなり限定されますが、ペットボトル(透明な容器?)でラベルが剥がされていて、かつ中身が水(透明な液体?)であれば持ち込み可能のようです。
ちなみに私は飲み物の中身が麦茶で色がついていたのでNGでした...
Candidate RequirementsのPSIテストの説明動画を見ると、2分13秒あたりで「飲み物の持ち込み禁止」とあるので原則は禁止と思っていますが、CKA,CKADで特別に認められているのかもしれません。
PSI Bridge Secure Browserのセキュリティ設定が必要(Macの場合)
試験を行うには自分のPCに「PSI Bridge Secure Browser」と呼ばれるソフトのインストールが必要で、このソフト上で試験が行われます。Linux FoundationのマイページでCKAまたはCKADの試験ページに行き、チェックリストの一番下にある「Take Exam」をクリックすることでアプリのダウンロードページに行けます。ただ 「Take Exam」のボタンは試験開始30分前にならないと押せない のでご注意ください。
OSがMacの場合はソフトをインストールしている途中に以下のようなウインドウが出てきて、「システム設定」アプリでセキュリティとプライバシー設定の変更を求められます。
指示通りに「プライバシーとセキュリティ」から「画面収録」を選択し、PSI Bridge Secure Browserからのアクセスを許可することが少なくとも必要になります。
Candidate Requirementsのページを見ると、「(画面収録だけではなく)マイク、カメラ、オートメーションの許可を求められるかも」と書かれていますが、私の環境を改めて見たら「画面収録」「マイク」「カメラ」の3つをアクセス許可する設定になっていました。
試験中Tips
画面の上部分は実は隠せて、作業スペースを拡げられる
試験はPSI Bridge Secure Browserのアプリ上で、下の図のような画面で問題を解いていきます。
左側に問題文のウインドウがあって右側に作業スペースがあるのはkiller.shと同じなのですが、デフォルトだと上部がアプリの領域として使われており、killer.shよりも作業スペースが狭くなっています。killer.shをノートPCではなく、サイズの大きいモニターでやっていた人であればなおさら狭く感じてしまうでしょう。
実はこの上部の領域は隠すことができ、作業スペースを拡げられるのです。上図の説明でも書かれていますが、右上の"Click to Shrink the Header Bar"と吹き出しが出ているアイコンをクリックすると隠せます。
※私自身はCKAを受けた際はこれに全然気づかずに、メチャメチャ狭い領域で2時間の試験をやってのけてしまいました。。。
ターミナルやブラウザの文字サイズを小さくする
試験環境のデフォルトのターミナルとブラウザの文字サイズが案外大きく、サイズが小さいノートPCで作業する場合はやりにくい可能性があります。その場合はターミナルだと上メニュの「View」をクリックして「Zoom Out」、ブラウザ(Firefox)は右側の「三」をクリックすれば文字サイズを調整可能です。
別のやり方として、先に紹介したPSIのサンプル画面で上の方に「-」と「+」のボタンがありサイズを変更できそうです。ちなみに私はここを押したらどのような挙動になるのかまでは試験中に確認できていないのですが、もしかするとこちらの方が楽なのかもしれません。
自分がいるクラスターのコンテキストとノードを常に確認する
コンテキストの切り替え(CKA,CKAD共通)
各問題の最初に
kubectl config use-context [context]
というコマンドでアクセスするクラスターを切り替える作業が必要となります。
ここをうっかり忘れてしまうと、間違ったクラスターに接続したまま作業して上手くいかずに大きな時間ロスになってしまいます。各設問で忘れずに実行するようにしましょう。
設問に出てくる kubectl config use-context [context]
コマンドはマウスの1クリックでコピーが可能ですが、問題本文のコピー方法と少しやり方が違うのでご注意ください。具体的には、このコマンドが書かれている領域にポイント(クリックも必要かも)すると右上に"Copy"の文字が現れます。ここをクリックして文字が"Copied"に変わればコピー完了です。
※ 自分はCKAを受けた時は勘違いして「"Copy"が出たらコピー完了だろう」と思ってしまい、だけとそれだとコピーできていなくて焦りました。。。
コンテキスト切り替えはCKAの場合、killer.shの問題でも出てくるので本番でも同じことをやるんだなあと想像できるかと思います。これが「CKAD版のkiller.sh」だと一切出てこなくて、全問題が一つのコンテキストで解けるようになっています。なので「CKADだと面倒なコンテキスト切り替えをやらなくて済むー」と思いがちですが、CKAD本番試験ではコンテキスト切り替えが必要になるのでご注意を!
Important Instructions: CKA and CKADの表を見ると見ると確かに、CKADでも複数のコンテキストを使うのがわかります。
ノードにsshした後は忘れずに戻る(CKAのみ対象)
CKAの場合は、クラスター管理に関する問題などでkubectl
コマンドやマニフェストを書いたり修正したりするだけでは不十分で、問題が起きているノードにsshでアクセスして調査したり、クラスターのアップグレード等が必要なことがあります。無事に問題を解けて一安心してしまいがちですが、終わったら必ずノードからログアウトすることを忘れないようにする必要があります。実は私自身もログアウトし忘れて以後の問題を進めてしまい上手くいかずに、若干パニックになってしまいました。。。
「今自分がどこのノードで作業しているのか?」は、ターミナルで入力を受け付ける左側(プロンプト)に書かれたノード名からわかるので、ここを適宜確認しながら問題を解いていった方がよさそうです。
ターミナルがフリーズしてしたら「Ctrl + Q」と打ってみる
ターミナルでコマンドを打っている時に突然入力を受けつけなくなる事象に遭遇してしまうかもしれません。私もCKA受験時にターミナルがフリーズしてしまい、だいぶ焦りました。
その場合の原因として一つ考えられるのが「誤って『Ctrl + S』と打ってしまった」ことです。ターミナルでの「Ctrl + S」は出力停止を意味するコマンドで、その後に文字入力しても(内部的に受け付けてはいるのですが)出力されなくなってしまいます。これを解除したい場合は 「Ctrl + Q」と打つ といいようです。
「Ctrl + Q」でも解決しないとか、それ以外の不測の事態でターミナルを新たに起動せざるを得なくなった場合、ターミナルで直接設定していたaliasや環境変数(do="--dryrun=client -o yaml"
等)はまた一から設定し直すことになってしまいます。これを防ぐために~/.bashrc
にaliasや環境変数を定義しておくのも手です。(初回編集時は編集完了後にsource ~/.bashrc
を実行することをお忘れなく!)
リソースの作成や編集は極力kubectl(=k)
コマンドで行う
リソースを一から作成する必要がある場合kubernetes.ioからサンプルのマニフェストを見つけてきてviにコピペしてファイル指定でkubectl create
等を実行するのが一つのやり方ですが、「Firefoxでマニフェストを探してコピペして編集」の作業が意外と手間も時間もかかります。そこで、極力ターミナルだけでマニフェストを作れた方がいい と個人的には思っています。
主要なリソース(Pod, Deployment, Service, Job, ConfigMap, Secret, Role等)はPodのkubectl run
以外は全てkubectl create [リソース名] ...
で作れるので、コマンドだけでリソースやマニフェストを作れるノウハウがあると結構楽です。また、既に作ったリソースを更新する場合も状況に応じてkubectl set
,kubectl label
,kubectl scale
等のコマンドが使えるので、覚えておいて損はないと思います。
どちらかというと「試験前Tips」になってしまいますが、Udemyの模擬試験やkiller.shをやるときから「これってコマンドだけで完結できないかな?」と意識しながら取り組んでみるといいでしょう。Udemy講座(Certified Kubernetes Administrator (CKA) with Practice Tests等)のPractice Testを終えた後の解説動画でもこの辺のコマンドを駆使しているのできっと参考になると思います。
パニックになりがち?
CKA,CKADの両方を受けてみて思ったのですが、選択式の試験とは違って状況に応じて適切な対応をターミナルからコマンドで実行していく形なので、結構頭を使って疲れます。そしてエラーなどが発生して想定通りの挙動から少しでも外れて手間取ってしまうとどんどん時間が過ぎていくので、精神的にも追い詰められいきます。(特に前半で詰まってしまうとそう...)
根本的な対策としては、緊張状態の本番でも極力詰まらないように、Udemyの模擬試験やkiller.shで多くの問題に直面して対応ノウハウを蓄積していくいくことだと思いますが、十分に試験の準備が取れていない方もいらっしゃると思うので わからない問題は潔くスキップして、解ける問題から進めていく のも一つの手です。本番試験だと問題にフラグをつける機能があるので、解けていない問題はフラグをつけていると後で探しやすくなります。
おわりに
本記事が今後CKA,CKADを受験する方の参考になれば幸いです。