はじめに
以前より興味のあったKubernetesの勉強も兼ねてCKAとCKADを取得しました。
業務ではKubernetesは使ったことはなく、勉強前まではDocker周りをいい感じにしてくれるツールくらいの認識しかなかったのですが、Kubernetesの基本を体系的に学習でき、良い機会になりました。
勉強方法
Kubernetes完全ガイド
他の合格記の方も書かれていますが、こちらの書籍はオススメです。
Kubernetes完全ガイド
(2020/01/04現在Kindle Unlimited対象なので、利用者は無料で読めるようです)
こちらの書籍ではコードでKubernetesのマニフェストファイルが紹介されているのですが、試せるものは全て手で書きながら学習しました。
環境はdocker for macに付属しているKubernetesです。
メトリクスやRBAC, NetworkPolicyなど、一部工夫しないと動かないものや、そもそも動作しない等もありますが、そこはスルーしました。
また試験外のこともコンテンツも多いのですが、とても勉強になりますし、試験関係なくKubernetesの初学者にもオススメできると思います。
Kubernetes The Hard Way Vagrant
CKAの方ではクラスタの管理も出るので、自前でKubernetesクラスタを作成するチュートリアルであるKubernetes The Hard Wayを行いました。ただ、GCPのプロジェクトの用意が面倒だったので、Vagrantバージョンの方を進めました。
初期設定のままだと、API Serverの応答が帰ってこないことが多かったので、masterのメモリ量を増やすことをオススメします。(デフォルトは512MB, 1GBあると安定動作しました)
CKADを取得を目的とする方は、こちらの守備範囲ではないので、やらなくても大丈夫だと思います。
CKAD-exercises
CKAの受験後、CKADを受けるまでに、CKAD-exercisesを1周しました。
問題文を見てコマンド・マニフェストを書く → 答えを見る を繰り返して、手を動かすことを重視しました。CKADの受験日前日にこのエクササイズを行ったのですが、このおかげでコマンドが割とスラスラ書けるようになったので、やってよかったと思います。
Tips
雛形作成のコマンド
試験では作成するリソースの量が多いので、ぱっと雛形作成をできると時間短縮になりました。
kubectl run/create --dry-run -o yaml
で 雛形は簡単に作れます。
特に以下のコマンドはいつでも打てるようになっておくとよいと思います。
# Pod
kubectl run $NAME --image=$IMAGE --restart=Never --dry-run -o yaml > pod.yaml
# Deployment
kubectl create deployment $NAME --image=$IMAGE --dry-run -o yaml > deploy.yaml
# Job
kubectl create job $NAME --image=$IMAGE --dry-run -o yaml > job.yaml
# CronJob
kubectl create cronjob $NAME --image=$IMAGE --schedule="* * * * *" --dry-run -o yaml > cj.yaml
# Service(clusteripはnodeport, loadbalancerなども選べる)
kubectl create service clusterip $NAME --tcp=$PORT:$TARGET_PORT --dry-run -o yaml
JP付きと付かないものの違い
CKA-JPとCKADを受けましたが、どちらも試験問題は多言語対応であり、試験中のチャットが日本語か英語かの違いしかありませんでした。
Linux Foundationのサイバーマンデーセールでは、JPが付いてないもののみだったので、セールを狙う + 英語が読めるのであれば、JPなしで良いと思います。(私はCKA-JPを申し込んだ後にサイバーマンデーセールを知ってCKADを申し込みました……)
最後に
CKA 82% CKAD 96% で合格することができました。(合格ラインはCKA 74% CKAD 66%)
合格はできましたが、まだまだ勉強不足だと感じました。(特にCKAの方)
これからも精進していこうと思います。
この記事を読んだ方のお役に立てれば幸いです!