CKAD 考試心得
前言
先不要問我考這個可以幹嘛,有證照在求職或面試上真的幫助不大。雖然這麼說但去年還是報考了,一方面是想用$督促自己唸書;另一方面聽說 CKAD、CKA 等考試方式是上機考,感覺是個不錯的體驗想試試看,畢竟有張證照在公司講話也比較大聲(吧)。
拖拖拉拉準備半年終於考過了,附上人權
準備過程
這邊列出準備考試有用到的資源:
- Kubernetes 官方文件 - 常見的 resource 務必查到滾瓜爛熟
- Udemy 課程 - 附 KodeKloud Lab 可以大量練習
- CKAD exercise - 題目很多,個人認為滿有幫助的
- Killercoda - Scenario 推薦都做過一遍
- 報名考試送的兩次模擬考
準備上就以 Udemy 課程為主,考前大量做題練手感。這個課程非常推薦,雖然講師是印度人,但沒有什麼口音,每一章節後面都會附上 Lab 來練習,可以說是買 Lab 送課程,用優惠券買相當划算。
課程上完對常見的 resource 有了解後就開始大量做題。考試範圍其實有包含 Helm、docker / podman、Kustomize,但我考兩次只有考過 docker,Helm 和 Kustomize 一題都沒出現。
做 CKAD exercise (Github repo 那個) 練習時,我是搭配免費的 K8s playground 如 Killercoda、Killershell 或是 KodeKloud 來練習,如果自己電腦有裝 Kind 也是可以用來練習,用這些雲端服務的好處就是用完不用自己去 reset 環境。
心得
看其他大神們如 Mike、Tico 的分享,考試好像很簡單(?),實際上並不是這樣,像我這種工作上只有接觸到皮毛的普通人,還是需要花時間練習。
上完課程其實不難,難的是每天下班累得要死,在送小孩上床後還要有意志力停住想點開遊戲的那根食指,打開課程和印度人共度美好的夜晚。
第一次考試以差兩分及格飲恨,一部分可以歸咎於考前遇到太多狀況而緊張,另一部分是很多東西都只有一知半解,雖然可以靠 YAML 或是 CLI 快速建立資源,但是要除錯還是得靠對 K8s 的理解。
有一說法是報名考試附的模擬考比實際考試難,個人體感差不多,只是模擬考題目多了點(約 22 題),實際考試我第一次 20 題、第二次 17 題。考試時間兩小時,如果手速比較慢的話會有時間上的壓力。
第二次寫完只有一題 ingress 相關的不確定,其他都有寫出來,最後成績是 91 分,有點出乎意料。
考試建議
- 考前會需要排隊進去等待考官檢查你的環境,如果是在家考試,請把房間收得超級乾淨,伸手可及的地方都不要有考試不允許出現的物品。
- 準備夠大的螢幕,考試的畫面左方是題目,右邊是一台 Linux VM,那個畫面很小。因為是遠端連線,要有心理準備打字的延遲會跟不上你的手速,操作起來有點痛苦。
- 如果不是用筆電的話,攝影機的線一定要夠長,考官會要求拿攝影機拍你的桌子下方。我第一次考試因為這樣拉扯結果造成 webcam 斷線,一旦攝影機斷線你就會被踢出考試系統,從排隊開始的所有流程都要重來一遍。
- 實際考試有很多題目是模擬考和 KodeKloud 剛好沒有 cover 到的,因此還是推薦上面有列出的資源都務必練習過。
- 前一天一定要睡飽,考試會指定 ssh 到特定機器或是在特定的 namespace 下操作,題目一定要看清楚,不然一串帥氣操作結果 namespace 設成 default 可是一分都沒有。
- 準備時務必理解每一個 key 代表的意義。KodeKloud 的 Lab 會很好心的告訴你 key / value 填什麼只要無腦複製貼上就好,但考試會像這樣考:
請建立一個 Cronjob 叫 grep 使用 XXXX 指令,每 30 分鐘執行一次,失敗不重啟 Pod,保留 196 個成功的 Job 以及 87 個失敗的 Job,每個 Job 執行時間不能超過 8 秒。 看到這個要馬上知道在文件中要搜尋這些關鍵字:successfulJobsHistoryLimit、failedJobsHistoryLimit、activeDeadlineSeconds等等。 - 能夠用 CLI 一行指令操作的都用 CLI 做,不要去複製 YAML,這樣會太慢。例如建立 Pod 就用
k run tmp --image=busybox。 - 不熟 Vim 的人需要練習一下,像是編輯、退出、複製、插入、縮排這些指令熟悉可以省下很多時間。
- 在大量練習的過程也要練習怎麼快速驗證操作是正確的,不要想說全部做完再回頭檢查,做完下一些
getdescribe檢查不會花太多時間。如果是要測網路,可以用k run tmp --image=busybox --rm -it --restart=Never -- wget -O- <url>來快速測試。印象中有一題是要修改一個 deployment,改完發現怎麼 Pod 沒有被更新,查了一下才發現原來是 rollout 被暫停了,如果沒檢查到這題就做白工了。
其他有想到的之後再補充吧