一个新人工程师在学习Kubernetes并努力获得CKA认证的过程记录

我已经毕业一年了,最近刚刚获得了Certified Kubernetes Administrator (CKA; 认证Kubernetes管理员)资格,所以我想回顾一下过去的一年,并留下参加考试的记录。

2023年3月30日更新
因为我也获得了CKAD证书,所以我写了CKAD考试记录【2023年版】。

目标读者

    • CKA 取得を考えている人

 

    新卒エンジニアで Docker や Kubernetes などのコンテナ技術に興味がある人

タイムライン

我会简单地总结下我所做的事情和时间。按顺序写出直到获得 CKA 的过程。

時期内容2021年8月Kubernetes The Hard Way2021年11月〜Kubernetes 完全ガイド 第2版2022年12月CKA 申し込み(購入)2022年12月Kubernetes を利用したアプリ開発2022年1月〜Certified Kubernetes Administrator (CKA) with Practice Tests (Udemy)2022年2月kubeadm でクラスタ構築2022年3月CKA 受検

加入公司时的规格

加入公司当时,我对于容器的使用经验很有限,虽然曾经使用过容器,但对于其运作原理并不是很清楚。

    • Docker を使ったことはある

Dockerfile は書けるがコンテナの仕組みは分かっていない

Kubernetes? なにそれ美味しいの? どうやって読むの?
ラスパイ上で docker compose を使ってサーバー運用

入职培训

我在新人培训期间加入了团队,学习了工作内容。我加入了托管的Kubernetes服务(Kubernetes Service Hatoba)的开发团队。

当時 Kubernetes の読み方以上のことは全然分からなかった私は、そのチームに入って仕事ができるか不安しかなかったですが、結果的に Kubernetes について理解を深める機会になりました。

やった内容としては主に以下の2つです。

    • Kubernetes The Hard Way

 

    Elasticsearch と Kibana を Kubernetes にデプロイするハンズオン資料作成

Kubernetes The Hard Way の記録については別の記事にまとめていますのでそちらに譲ります。

 

ES / Kibana のハンズオン資料の成果物はこちらです。 Deployment や Service (type: LoadBalancer) の他に PersistentVolume や StorageClass の使い方も知ることができました。

 

新人研修结束时的规格

そんなこんなで以下のような状態になりました。この時点で周りに 「CKA 取るぞ!」と宣言 してしまったので、残された課題点を潰していきつつ、勉強をするよう自分を攻め込むフェーズになります。

    • Kubernetes の使い方や構成をわかってきた

手順に沿ってアプリをデプロイしたりすることができる
各コンポーネントの役割を理解した

残った課題

Kubernetes リソースの体系的な理解
Kubernetes ネイティブなアプリの開発
kubeadm を使用したクラスタ構築
kubectl コマンドの使い方

『Kubernetes 完全ガイド 第2版』の学習開始

職場の先輩に「Kubernetes The Hard Way をやったなら、後は『Kubernetes 完全ガイド 第2版』をやっておけば余裕です」と言われたので、とりあえずこの本から学習を始めました。

上述の通り、「Kubernetes リソースの体系的な理解」に課題を感じていたので、この本はとても役に立ちました。ただ、第10章を過ぎたあたりから内容が細かくなってきたので「CKA にはそこまで求められていないんじゃないか」と思い、一旦学習をやめて後述する Udemy の講座を中心に進めていくようにしました(実はまだ読み終わっていない)。

CKA 订购事项

サイバーマンデーで 半額セール をやっていたのでそのタイミングで購入しました。購入してから1年以内に受験する必要があります。

時々セールをやるので、 CKA を取ろうと思ったら情報をウォッチしておくと良いと思います。どうしてもタイミングが合わなそうな場合は、後述の Udemy 講座の受講で 15% OFF のクーポンがもらえるので、それが使えます。

使用Kubernetes进行应用程序开发

这个话题更适合作为CKAD的范畴,不过因为很有趣,我还是写下来了。

ちょっと変則的ですが私の会社では去年、新人研修終了後(本配属後)に個人開発演習と称して、2週間自分の好きなものを開発できる期間がありました。

私は “Slack Bot as a Service” として Slack Bot を動作させるプラットフォームを作りました。具体的にいうと、ユーザーの作った Slack Bot アプリケーションをサービス側で用意した Kubernetes クラスタ上に Pod としてデプロイする仕組みです。
ユーザーの Pod や Secret をデプロイする API サーバーやワーカーも Kubernetes 上で動作するという、いかにもクラウドネイティブっぽい設計をするのは初めての経験だったので、とてもイキイキと開発していました。

Certified Kubernetes Administrator (CKA) with Practice Tests (Udemy)

Udemy に Certified Kubernetes Administrator (CKA) with Practice Tests という講座があり、これもまた CKA 対策の鉄板 です。

私は会社で Udemy for business が使えたのでそれを利用しましたが、そうでなくとも頻繁に大幅割引きのセールをやっているらしいので、それらの機会を狙うと良さそうです。

『Kubernetes 完全ガイド』をやっていましたが、一回触れただけで完全に理解できた自信はなかったので、(JSONPATH の講座も含め)全部飛ばさずにこなしました。講座に付帯する KodeKloud の環境がより試験に近い環境なので、試験環境や kubectl コマンドの使い方に慣れるという意味で非常に役に立ちました。

試験環境という意味では、 Windows を使う場合

    • Ctrl + C -> Ctrl + Insert (コピー)

 

    Ctrl + V -> Shift + Insert (貼り付け)

のショートカットを使うのに慣れるのは重要だと思います。 Mac の場合は通常通り ⌘ + C, ⌘ + V が使えます。私は試験対策後も Shift + Insert を使い続けています。意外と使いやすい ?

kubectl run や kubectl create は講座のハンズオンをこなしていくうちに自然に慣れていきました。逆に NetworkPolicy や PersistentVolume などは kubectl create では作れないので、ドキュメントの参照先を見つけておくことが重要になります。 Kubernetes ドキュメントサイトの検索機能を使いまくりましょう。

我会整理一下我个人认为有用的网页。

Configure a Pod to Use a PersistentVolume for Storage

PersistentVolume のページには書いていない hostPath な PersistentVolume のサンプルがある

共有ボリュームを使用して同じPod内のコンテナ間で通信する

emptyDir: {} なボリュームを作って Pod 内の複数コンテナ間でボリュームを共有する時のサンプル

上記以外には各リソースのページをよく見ていましたが、リソース名の検索で一発なのでここでは省略します。
また、 kubectlチートシート はよく紹介されていますが、試験対策時や試験中にこれを使いたくなることはありませんでした。

使用Kubeadm进行集群构建。

これはただの趣味なんですが、同じ時期に Raspberry Pi 4B 8GB 数台を用意して kubeadmを使用したクラスターの作成 を実践しました。

割とあっさりできてしまったので「あれ、こんなものなの」と拍子抜けした記憶があります。以前に VM で同じようにクラスタ構築を試した時にコケたことがあったので、割と運ゲーな面もあるのかもしれない。。

模拟考试 (Mó nǐ shì

先述の Udemy の講座 (KodeKloud) には3つの、 CKA を申し込むと使える Killer Shell には1つの模擬試験(2回まで受験可)があります。

KodeKloud の模試をやって、苦手なところを個別に復習して……という感じで、試験対策をしました。2回ずつ模試をやって、だいぶ自信がついた状態になりました。

CKA を申し込むと使える環境には Killer Shell (模試) と Killercoda (練習問題的な何か) の2つがあります。私は試験前日まで後者を模試だと勘違いして、それをやっていましたが前日夜になって Killer Shell の方が模試 だと気づいて、慌てて解きました(正確には両者の関係は理解していたのですが、 Killer Shell をクリックした時になぜか Killercoda にリダイレクトされたのでそういうものだと思ってしまった)。
この模試は 実際の試験より数段難しく作られている とはいえ、2時間測ってやった結果が合格点にギリ届かなかったので、ちょっと不安になりました ?

この記事をお読みの皆さんはお気をつけください。。

接受测试

然后,到了正式考试的时候。因为早上脑子最清醒,所以我预约了上午9点15分开始的时间段。

試験時間は2時間、問題数は17問 でした。 CKA-JP ではなく CKA の方を買ったので(ケチった)、「英語を話すのかなあ」と思っていましたが、テキストチャットで済みました。私のウェブカメラのマイクのエコーが酷かったので、試験中はスピーカーをミュートにさせてもらいました。

我在一个人居住的单间公寓里参加考试。听说考场会被仔细检查,所以我清理了桌子和房间,并且提前给书籍盖上了毛巾。

关于考试本身,我相当仔细地准备了策略,结果在开始70分钟左右就完成了一次全面的解答。剩余的时间我进行了一次整体的操作确认(有一个问题无法进行操作确认),然后结束了考试。

在时间分配方面,考试环境只显示剩余时间的进度条,不明确显示剩余多少分钟,所以必须认真看时间开始。可我却忘记了看时间,感到很困扰 ?

结果

我以100分中的91分通过了考试?(及格线是66分)。

certificate
screenshot

心得体会

    • CKA について

せっかく勉強するならいい点数で合格したいと思っていたので、9割取れてよかった
Kubernetes の各リソースや kubectl の使い方、クラスタ構築について自信を持てるようになった

そもそも Kubernetes について

入社時はなにも知らなかったし「docker compose でいいや」と思っていたが、便利さを知った

マニフェストで細かく設定できる
より堅牢で安心感のある運用ができそう

一方でマニフェストは docker compose だけの時と比べるとはるかに複雑

Helm を使うのが事実上標準であることも含めると学習コストが高い

これから

CKAD も受けてみようかな
docker compose 運用のアプリたちを Kubernetes 上に移行中だが、ただ移すだけではなくアプリの設計も Kubernetes ネイティブにしたい

虽然时间过得很快,但我对过去一年的 Kubernetes 学习进行了回顾!希望这篇文章能对我的初学者同学们和其他学习 Kubernetes 的朋友有所帮助。

广告
将在 10 秒后关闭
bannerAds