我平常不会使用到k8s,最多就是使用到docker swarm而已。在使用docker compose或是docker swarm时,觉得如果要做到更加复杂的应用以及维持系统稳定性配置会变得相当复杂,因此开始对k8s感兴趣

但又不知道应该从何开始,所以打算透过準备证照的方式来学习这项技能而最普遍的可能会先想到这三张:CKA、CKAD与CKSCKA着重在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在实际专案中大概扮演的角色

  • https://www.udemy.com/course/learn-kubernetes/?couponCode=ACCAGE0923

如果本来就有一些基本概念,那就可以直接去上底下的课程。虽然有部分的内容不在考试范围,但是整体来说覆盖率算高,并且课程也有附考题。不过考题的难易度比起正式考试简单不少,可以先小试身手

  • https://www.udemy.com/course/certified-kubernetes-application-developer/?couponCode=ACCAGE0923

有人可能会想要自己建立环境,但是我觉得课程提供的环境就已经很足够了,以考证照的面相来说可以不需要架环境

考题资源

报名考试后,就会附上模拟考,因为一旦启动就只剩36小时可以操作,所以建议考试前几天再来做。虽然他上面写模拟考的难度会高于实际考试,但是我自己觉得实际考试的难度没有简单多少,甚至有些考题的解题思路没有那么直观,不要抱持着实际考试真的会比较简单的想法去应考

而我自己个人因为有订阅kodekloud一个月,所以有开通底下的考题,难度我觉得比正式考试难。因为在2小时要完成20题以上,且部分考题的操作比较繁琐,蛮大幅提升我对于指令的熟练度。但我觉得非必要,预算足够或是真的写大量写题目的人可以考虑,总共有8次考试,至少160题以上,可以做好做满XD

  • https://learn.kodekloud.com/user/courses/ultimate-certified-kubernetes-application-developer-ckad-mock-exam-series

另外虽然网路上几乎没有人提,但是我看有人有在Dcard的平台在问testPDF如何。虽然我没有买,但是我有做他免费的题目,以免费的部分来说跟考试蛮相近的。但PDF的画质很低,答案的指令我甚至看不太清楚,且解题方式有时候我觉得不够直观,因此我自己是不建议花钱购买

此外github上也有相关资源,但是面相比较像是让你验收对于该领域的知识是不是有盲区,我自己觉得跟考题没有什么关系,时间不够可以直接跳过

  • https://github.com/dgkanatsios/CKAD-exercises

考试注意事项

  • 模拟考环境过期时间

首先是报名后提供的模拟考过期时间跟实际考试过期时间好像不一致,像考试的过期时间是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使用所以在解题时,针对一些复合需求可以去记一下怎么搜寻

  • 善用-h

比起配置yaml档,直接使用command来达到需求一定是更快的方法,但是我们不一定记得指令的细节,有时候比起去查官方文档直接使用-h来看会更快。同时如果是helm领域或是podman等,善用-h或是 — help搭配grep可以节省不少时间

  • 必备的Linux指令

对于yaml档会需要用到vim做修改,我觉得只需要知道如何编辑、储存以及搜寻关键字或是跳到指定行数而另外一个我觉得蛮重要的就是grep,例如快速筛选出特定关键字,可以搭配-i 来忽略大小写以及-C来显示特定行数的前后文

  • 不要空白

我们不一定能知道每一题的答案,但是不太可能一整题的所有要求我们都做不到,因此即使我们不知道最后的答案,中间有完成部分的步骤可能还是可以补到一点分数。因此如果可以的话能写多少算多少~

会不会很难?担心会考不上

我的程度是转职2年左右非本科的工程师,平时工作是完全没有使用k8s的经验,对于docker有基本的认识,因此我觉得如果上面的课程有好好上完,模拟考都有好好写应该是没有太大的问题。并且因为CKAD报考后有两次机会,而我的经历是,第一次跟第二次考试内容几乎一样,所以如果第一次考试时有不太会写的可以把题目记住,结束再来解题

希望以上的资讯能大幅减缓报考后不安的心XD

之后我会针对CKAD考试范围的各个领域,整理相关的笔记,并且提出一些考题中可能会问但是课程中没有提到的观念到系列文章中,如果有兴趣可以follow