2020年9月よりCKA_Curriculum_v1.19となったので、v1.18をベースに勉強して当日はCKA_Curriculum_v1.19に沿った試験を受けたことになります。本記事では、自分がCKAに申し込みをする前に知って起きたかったことをログとして書ける範囲でまとめておきます。(ちなみにこのバージョン変更をすっかり忘れてて申し込み時に気づきました)
※執筆時期 (2020年9月)
おススメ勉強方法
色々な書籍やWeb講座に手を出しましたが、触ってよかった教材群です。(事前知識としてLinuxは業務で利用していましたが、Kubernetesは任意のDockerイメージをDeployment&Serviceとして展開ができる程度の知識でした)
教材を羅列するだけなのも味気ないので、Kubernetesに対する理解 と CKA合格 という2つの観点で評価しておきます。
Kubernetes実践入門
Kubernetesに対する理解 | CKA合格 |
---|---|
★★★★★ | ★☆☆☆☆ |
最初の1冊におススメ。読みやすいです。
入門書として読みやすく、CKA/CKADを受けると決めた人のレベルにもあっていると思います。特に3章の「Kubernetes上にアプリケーションをデプロイする」はcreateやexposeでPodを操作するCKAのスタイルともマッチしており何度も繰り返してよみました。
Kubernetesポケットリファレンス
Kubernetesに対する理解 | CKA合格 |
---|---|
★★★☆☆ | ★★★☆☆ |
副読本。玄人でも読んでいれば学びがあるはず。
Kubernetesを学び始めた初期の頃はこの本にお世話になっていました。公式ドキュメントをベースに日本語のコメントが追記されています。ServiceAccountとは?StorageClassとは?というそもそもをYAMLを見ながら解説してもらえるのでCKAに関係なく持っていて損はない書籍です。
Kubernetes完全ガイド
Kubernetesに対する理解 | CKA合格 |
---|---|
★★★★★ | ★★☆☆☆ |
かなりガチンコの内容で、CKAで求められる以上の内容が詰まっています。
最後の仕上げとして読みました。他の書籍と比べると詳細すぎる点もありますが、RBAC周りを体系的に学べたので良かったです。
Kubernetesで実践するクラウドネイティブDevOps
Kubernetesに対する理解 | CKA合格 |
---|---|
★★★☆☆ | ★★☆☆☆ |
「K8sを展開する際はどのクラウドベンダーがいいのか?」というQに対して回答を用意している点など、歯切れの良さがあり読み物としてもおもしろい。
IngressによるTLS終端やResourceQuotaなどCKAで扱う以上のニッチな話もありますが、11章の「セキュリティとバックアップ」ではまさにクラスター管理者目線の話が多く、目を通しておいてよかったです。
書籍は他に「Docker/Kubernetes開発・運用のためのセキュリティ実践ガイド 」「15Stepで習得 Dockerから入るKubernetes コンテナ開発からK8s本番運用まで 」「Docker/Kubernetes実践コンテナ開発入門 」なども読みましたが、「Docker/Kubernetes開発・運用のためのセキュリティ実践ガイド 」は他の本と一線を画すセキュリティ観点に特化した本で面白かったです。(CKAにはあまり役立ちませんでしたが...)
Certified Kubernetes Administrator (CKA) with Practice Tests [Udemy]
Kubernetesに対する理解 | CKA合格 |
---|---|
★★★★★ | ★★★★★ |
言わずと知れたCKA対策講義で、CKAに合格することを目的とするのであればベストバイだと思いました。
ハンズオンで実機を触れ、模擬試験もいくつかあります。驚いたのはCKA対策と銘打ちながらもKubernetes全体の理解がどの書籍を読むより深まりました。講義の構成もCKAの1.18カリキュラムを意識していることが伝わり、逆に「LivenessProbe/ReadinessProbeやStatefulsetはCKAの範囲じゃないので割愛します」と明示的に外してくるあたりも一貫性があり高評価でした。やった人は分かると思いますが、「Section 13: Troubleshooting」は実践形式で楽しいです。
Cloud Native Certified Kubernetes Administrator (CKA) [Linux Academy]
Kubernetesに対する理解 | CKA合格 |
---|---|
★★★★☆ | ★★★★★ |
無料期間があったので一通り受けました。こちらもCKAのカリキュラムを意識していたものの質&量共にUdemyの方が網羅性があって良かったです。
Udemyと比較するとネガティブな側面が多いですが、単体で見ればCKA対策として学びが多いです。
それくらいUdemyの講義は完璧でした。
あとはCourseraというサイトでKubernetes関連を学びましたがCKAに特化していた題材はなかったのでCKA対策にはなりませんでした。このサイトは日本語字幕を出せる点が、上記2つのオンライン講座に秀でている点だと思います。
試験当日:CKA_Curriculum_v1.19
前日に試験日程を予約し、空き会議室を予約して受験に臨みました。
担当官とはチャットでやり取りが進み、首からかけていた入館証や手首につけていた時計を外すように言われました。
また、定期的に腕を見せるよう指令がありカメラに写すことを求められました。あと、GoogleChromeに広告ブロックを入れていたので試験開始ボタンを押しても遷移しないというプチトラブルも。Chormeの怪しい拡張は抜いておいた方がいいですね。
試験内容としては以下が公式のカリキュラムで、出題された問題は確かに全てその通りでした。
• Cluster Architecture, Installation & Configuration • Workloads & Scheduling • Services & Networking • Storage • Troubleshooting
Udemyの講義で網羅されているとは思いつつ、新カリキュラムの中にある以下項目が具体的に何をさしているのかが分からなかったのは少し気になりました。この部分はUdemyには現在扱われていないと思います。
• Awareness of manifest management and common templating tools
実機はUdemyのデモ環境のように鈍いのかな、と思っていましたがそれと比べると爆速だったので快適に試験を受けることができました。歯が立たない難易度の問題はありませんでしたが、問い方が曖昧で「どう解釈したらいいんだろう...」と思える設問がいくつかありモヤモヤしました。
結果は翌日届き、無事合格。つくづくUdemyのおかげです。
やっておくといいこと
自分が好きに触れる環境でkubeadmを使ったインストールを行い、実感を持ってクラスター操作に慣れておくのはありだとは思いました。Udemyの環境は制限時間が来るとリセットされてしまうので。
あとはUdemyのハンズオンをやりながら、ヒントではなく(ヒントはほぼ答えの時もある)公式ドキュメントやコマンドラインのヘルプを駆使して回答する癖はつけておくといいと思います。
helpは-h
で出せるので、例えば「kubectl run」でPodを作るときlabel指定でどうするんだっけ?と思った際は
$ kubectl run -h ... -l, --labels='': Comma separated labels to apply to the pod(s).
で構文をチェックした後に以下のように実際にyamlに掃き出し
$ kubectl run nginxpod --image=nginx --labels=color=red --dry-run=client -o=yaml > nginxpod.yaml
そのyamlを元に実機に反映していました。
$ kubectl apply -f nginxpod.yaml
CKAでよくあるリソースを作成する場合、公式ドキュメントを見るよりヘルプで構文例を見る方が手っ取り早いです。
やらなくてもいいと思ったこと
Kubernetes The Hard Wayは他の方の受験記にて絶賛されていたので一生懸命やりましたが、CKAの合格にはあまり繋がらなかったように思います。というのも、一応実機でやってはみましたが、結局コピペで終わってしまいます。もちろん、それの意味を考えてやれば学びは多いとは思いつつ、結局は証明書を作って配置&必要なモジュールをインストールしているだけなんですよね。
それよりも、kubeadmで作成した環境である証明書の名前を変えた時に何が起きるのかを調査したり特定のMaster用のPodにトラブルを起こした際の挙動を確認したりした方が、有益かつタメになると思います。
あとは、他の方の受験ログに公式ドキュメントを読み込むべし!ということもあって以下のようにYAMLをコピペするために必要な公式ドキュメントはブックマークしておきましたが
Assign CPU Resources to Containers and Pods | Kubernetes
検索でも辿り着けるのでそこまでマストな作業かと言われると疑問です。
正直な感想
私が想像していたよりも、数段やさしい問題が多かったです。
準備期間を数カ月用意できたこともありますが、試験時間が3時間→2時間になったことも相まって試験内容が簡単になった可能性があります。少なくとも、Udemyの模擬試験の方が難しかったです。
Linux周りの基礎がある方であれば、DockerやK8sに触ったことがなくても「Kubernetes実践入門」のような全体概要がつかめる書籍を読み込み、Udemyの「Certified Kubernetes Administrator (CKA) with Practice Tests」をしっかり1周すれば合格圏内に行くと思います。1度目がタメなら再試験が受けれる仕組みも心理的保険になります。
全体の感想として、試験自体は完全オンライン&実践形式で大変楽しく、試験対策を通して、Kubernetesの基礎的な部分を体系的に学べたのは今回受験を志望して良かった点です。
- なぜPodを作るとMasterNodeではなくWorkerNodeに展開されるの?
- なぜkube-systemにいるMaster関連のPodをDeleteしても復旧してくるの?
- Serviceに対するルーティングは誰がどのようにやっているの?
- 新しいユーザに特定のNamespaceのリソース操作のみの権限を与えたいがどうするの?
上記質問はCKA対策をする前の私は全て答えられませんでした。が、今は答えれます。それくらい、CKAを通じてKubernetesの基盤観点に対する理解が深まりました。
以上、本受験記が参考になれば幸いです。