egashira.dev
Published on

Kubernetes 技術者認定 CKA/CKAD を取得したので振り返る

はじめに

2022 年 2 月に Certified Kubernetes Administrator(以下 CKA)、同年 4 月に Certified Kubernetes Application Developer(以下 CKAD)に合格した。おそらく 3 年後もエンジニアとして働いていたら受験する可能性が高いので自分のためにも残しておく。

受験した感想としては、Kubernetes 初学者である自分にとって学習体験が良く、非常に楽しみながら学習できた。

CKA/CKAD のそれぞれの位置づけ

2022 年 4 月現在では、試験の出題範囲とそれぞれ配分については下記のようになっている。

CKA

  • ストレージ: 10%
  • トラブルシューティング: 30%
  • ワークロードとスケジューリング: 15%
  • クラスタのアーキテクチャ、インストール、構成: 25%
  • サービスとネットワーキング: 20%

CKAD

  • アプリケーションの設計と構築: 20%
  • アプリケーションの展開: 20%
  • アプリケーションの可観測性とメンテナンス: 15%
  • アプリケーション環境、構成、およびセキュリティ: 25%
  • サービスとネットワーキング: 25%

受験したイメージだが、こちらの Qiita 記事1と同じ印象を受けた。CKAD よりも CKA の方が試験範囲は広いものの、どちらも同じくらいの難易度だと感じた。

受験した順番も CKA -> CKAD の順に受けた(両方受けるなら個人的にはこの順番がおすすめ)ので、CKAD を受ける際にはある程度 CKA で得た知識を活用できたということも大きい。

学習に利用したもの

Udemy

基本的には以下の Udemy 講座をベースに対策した。他にも合格体験記事を調べるとだいたいの方がこちらを購入されているようだった。内容としては Lab 環境を利用したハンズオン形式かつ最後には本番を想定した Mock Exam がいくつか用意されている。これをやり込めば知識として基本的なことは習得できるので、個人的には現段階で最も優秀な教材だと思う。

書籍「Kubernetes 完全ガイド 第2版」

言わずと知れた k8s の完全ガイド。分厚く解説も丁寧なので全部を読むというよりは辞書的に知りたいことについて読み込むようにして利用した。

Kubernetes 完全ガイド 第 2 版 impress top gear シリーズ | 青山真也 | 工学 | Kindle ストア | Amazon

Killer.sh

Linux Foundation で試験バウチャーを購入すると、Killer.sh というサイトの試験シュミレータを無料で利用できる。1 回 36 時間のクラスタを 2 回利用できるので、Udemy 講座で学んだ後、試験直前に取り組むのがいいと思う。また、こちらのシュミレータの問題は難しめに設計してあるので、この問題に慣れておけば本番でもだいぶ適応できると思う。

https://killer.sh/

受験に際しての Tips

Chrome Profile の作成

試験はブラウザで受験する訳だが、普段使用している Chrome Profile だと拡張機能だったりブックマークだったり試験では不要なものが多いため試験のためだけの Profile を用意した。

Chrome ブックマークの作成

Profile に次いで、ブックマークも準備した。以下の URL は試験時も閲覧可能だが、いちいち検索する時間ももったいないので Chrome のブックマークを強化しておくのが良いだろう。

  • https://kubernetes.io/docs/
  • https://github.com/kubernetes/
  • https://kubernetes.io/blog/

ブックマークをいちから作るのは流石に骨が折れるので、僕は下記をインポートして活用した。Mock Exam などに取り組む過程で必要そうなページは都度追加して自分なりのブックマークを準備した。

kubernetes/Kubernetes-Chrome-Bookmarks.html at main · sidd-harth/kubernetes

エイリアス設定

kubectl コマンドを何度も叩くことになるので、エイリアスを設定しておくのがおすすめ。クラスタによってはデフォルトで設定されていることもあるが、気づけばもはや手癖で設定するレベルになっていた笑

$ alias k=kubectl

$ k version --short
Client Version: v1.22.1
Server Version: v1.22.1

$ export do="--dry-run=client -o yaml"

$ k run pod1 --image=nginx $do

kubectl でリソースのドキュメントを確認

explain サブコマンドが便利。YAML の書き方がわからなくなった場合、ドキュメントを調べるよりもこちらのほうが早い時も多々ある。

$ k explain pod

# --recursive オプションを付けるとネストしたオブジェクトも全て参照できる
$ k explain --recursive pod

# "." で繋げることでオブジェクトのフィールドを指定できる
$ k explain pod.spec

# 僕はよく less に流し込んで使っていた
$ k explain --recursive pod | less

リソースのショートネームを使う

k8s のリソースには、Pod だと po、ConfigMap だと cm、PersistentVolumeClaim だと pvc のようにショートネームが定義されている。コマンドで使用する場合はショートネームを使うと時間を短縮できる。

# api-resources サブコマンドを使うとどういうショートネームが定義されているか確認できる
$ k api-resources | head -n 10
NAME                              SHORTNAMES   APIVERSION                             NAMESPACED   KIND
bindings                                       v1                                     true         Binding
componentstatuses                 cs           v1                                     false        ComponentStatus
configmaps                        cm           v1                                     true         ConfigMap
endpoints                         ep           v1                                     true         Endpoints
events                            ev           v1                                     true         Event
limitranges                       limits       v1                                     true         LimitRange
namespaces                        ns           v1                                     false        Namespace
nodes                             no           v1                                     false        Node
persistentvolumeclaims            pvc          v1                                     true         PersistentVolumeClaim

できるだけ kubectl コマンドワンライナーでリソースを作成、変更する

# シングルコンテナな Pod を作る
$ k run pod1 --image=nginx:alpine

# nginx Deployment の nginx コンテナのイメージを変更
$ k set image deployment/nginx nginx=nginx:1.9.1

その他にも secret, configmap は create サブコマンドで、service だと expose サブコマンドで作成できる場合もよくある。リソースを作成する場合は、このコマンドで作れるなとパッと思い浮かぶようになっておけば良いだろう。

試験時の環境と注意点

デスク周り

本番の試験については自宅で受験した。環境としては利用できるものは利用し、いつもの作業環境に近い環境で臨んだ。

  • MacBook Pro 13-inch
  • 外部ディスプレイ 1 枚
  • 外付けキーボード
  • Magic Trackpad
  • 外付け Web カメラ

困ったこととしては、外付けの Web カメラを Mac に接続していたのに Mac の方のカメラが優先され上手く認識されなかった。仕方なく Mac を持ち上げてあたりを映して乗り切ったが、これはどうにか解決したい…。

ID

身分証明には下記で問題なかった。

  • 運転免許証
  • クレジットカード

事前に確認しておくべきもの

まとめ

今回は Certified Kubernetes Administrator(CKA)、Certified Kubernetes Application Developer(CKAD)の受験について振り返ってみた。学習する過程で手を動かしながら楽しんで学ぶことができた。結果として、Kubernetes についての知識を確認もできたので良かったと思う。次回は年内を目処に CKS にも挑戦してみたい。

Footnotes

  1. Kubernetes 認定資格 CKA/CKAD 受験の Tips - Qiita にある試験範囲のイメージ図が分かりやすかった。