我平常不會使用到k8s,最多就是使用到docker swarm而已。在使用docker compose或是docker swarm時,覺得如果要做到更加複雜的應用以及維持系統穩定性配置會變得相當複雜,因此開始對k8s感興趣
但又不知道應該從何開始,所以打算透過準備證照的方式來學習這項技能
而最普遍的可能會先想到這三張:CKA、CKAD與CKS
CKA著重在Cluster的管理與Security相關面向
CKAD則是著重在Core Concepts,例如Pod、Network操作等
評估了一下考試範圍後(CKS需要先考過CKA因此暫不考慮),決定先從CKAD開始熟悉k8s。當然這不代表CKAD比較簡單,相反之前在網路上爬文時看到普遍覺得CKAD難度高於CKA
最後上課加上寫題目大概花了1個月左右成功考過,雖然是低空飛過考了79分。但在準備過程中從完全不懂k8s,到如果要我把現有專案轉換成k8s不會無所適從,了解不同Deployments之間ClusterIP Services的通訊、Network Policies控制通訊的方向等等。總之如果是想要入門的了解k8s,我覺得在準備的過程真的收穫不少,預算足夠的話可以考慮一下。
附一下人權:
網路上已經有許多大神整理了相關的考照資源,但是我自己當初在準備的過程中還是充滿不安,如果有查到相關的標題還是會點進去看一下內文在寫什麼XD 因此還是打算以自己的角度紀錄備考的相關知識與過程
主要會著重在應考資源的部分以及考試時可能需要注意的事項
主要以Mumshad Mannambeth講師的課程與KodeKloud Training平台當作練習與模擬考的環境。課程的特點是會將一些複雜的觀念透過圖像或是動畫的方式來讓人更好理解,同時也會附上題目來驗收知識有沒有確實吸收,並且透過大量的做題來讓自己對於指令更加的熟悉
如果是完全的k8s新手(像我就是),建議先上最初階的課程。課程內容除了介紹k8s的基礎架構,在最後章節中也有一個簡單的前後端分離應用來讓我們更清楚k8s在實際專案中大概扮演的角色
如果本來就有一些基本概念,那就可以直接去上底下的課程。雖然有部分的內容不在考試範圍,但是整體來說覆蓋率算高,並且課程也有附考題。不過考題的難易度比起正式考試簡單不少,可以先小試身手
有人可能會想要自己建立環境,但是我覺得課程提供的環境就已經很足夠了,以考證照的面相來說可以不需要架環境
報名考試後,就會附上模擬考,因為一旦啟動就只剩36小時可以操作,所以建議考試前幾天再來做。雖然他上面寫模擬考的難度會高於實際考試,但是我自己覺得實際考試的難度沒有簡單多少,甚至有些考題的解題思路沒有那麼直觀,不要抱持著實際考試真的會比較簡單的想法去應考
而我自己個人因為有訂閱kodekloud一個月,所以有開通底下的考題,難度我覺得比正式考試難。因為在2小時要完成20題以上,且部分考題的操作比較繁瑣,蠻大幅提升我對於指令的熟練度。但我覺得非必要,預算足夠或是真的寫大量寫題目的人可以考慮,總共有8次考試,至少160題以上,可以做好做滿XD
另外雖然網路上幾乎沒有人提,但是我看有人有在Dcard的平台在問testPDF如何。雖然我沒有買,但是我有做他免費的題目,以免費的部分來說跟考試蠻相近的。但PDF的畫質很低,答案的指令我甚至看不太清楚,且解題方式有時候我覺得不夠直觀,因此我自己是不建議花錢購買
此外github上也有相關資源,但是面相比較像是讓你驗收對於該領域的知識是不是有盲區,我自己覺得跟考題沒有什麼關係,時間不夠可以直接跳過
首先是報名後提供的模擬考過期時間跟實際考試過期時間好像不一致,像考試的過期時間是14個月左右,但是模擬考環境就是大約一年。所以當我準備好要開模擬考環境時才發現都過期了!讓我多噴一筆錢啟動環境,有拖延症的人請注意XD
如果電腦是使用Mac,平常習慣使用Chrome,那我強烈建議一定要體驗模擬考的環境。因為考試環境是使用Firefox,所以control + F 的搜尋是出現在瀏覽器底部,跟Chrome差很多,加上一開始的瀏覽器是遠大於視窗的,當初考試時我以為沒有顯示出來浪費我很多時間
前面提到OS系統不同,以Mac為例,裡面的複製與貼上分別為
複製:control (不是command) + shift + c
貼上:control (不是command) + shift + v
而搜尋control + F則是
control + 中英切換 + F
真的要特別注意~
除了透過指令快速生成yaml檔之外,直接透過官方文檔提供的範例yaml檔也是很好的選擇,因此至少要知道如何快速的找到這些資源
但是我覺得更重要的是如何善用複合操作,例如:
更新具備某些label的Pod,新增其他label到這些Pod。直接搜尋label只會找到label與selector,但是搜尋update label就能直接找到command使用
所以在解題時,針對一些複合需求可以去記一下怎麼搜尋
比起配置yaml檔,直接使用command來達到需求一定是更快的方法,但是我們不一定記得指令的細節,有時候比起去查官方文檔直接使用-h來看會更快。同時如果是helm領域或是podman等,善用-h或是 — help搭配grep可以節省不少時間
對於yaml檔會需要用到vim做修改,我覺得只需要知道如何編輯、儲存以及搜尋關鍵字或是跳到指定行數
而另外一個我覺得蠻重要的就是grep,例如快速篩選出特定關鍵字,可以搭配-i 來忽略大小寫以及-C來顯示特定行數的前後文
我們不一定能知道每一題的答案,但是不太可能一整題的所有要求我們都做不到,因此即使我們不知道最後的答案,中間有完成部分的步驟可能還是可以補到一點分數。因此如果可以的話能寫多少算多少~
我的程度是轉職2年左右非本科的工程師,平時工作是完全沒有使用k8s的經驗,對於docker有基本的認識,因此我覺得如果上面的課程有好好上完,模擬考都有好好寫應該是沒有太大的問題。並且因為CKAD報考後有兩次機會,而我的經歷是,第一次跟第二次考試內容幾乎一樣,所以如果第一次考試時有不太會寫的可以把題目記住,結束再來解題
希望以上的資訊能大幅減緩報考後不安的心XD
之後我會針對CKAD考試範圍的各個領域,整理相關的筆記,並且提出一些考題中可能會問但是課程中沒有提到的觀念到系列文章中,如果有興趣可以follow