最近把 CKA 认证考过了,简单总结下考试经验,希望对需要的同学有所帮助。
报名地址为 https://www.cncf.io/certification/cka/
, 可以选择中文或者英文报名,我选的英文。
英文报名有几个优惠码:KUBERNETES15
、DEVOPS15
,可以打 85 折,亲测可用。
点击 「View Your Portal」或者直接访问 https://trainingportal.linuxfoundation.org/learn/dashboard
就可以看到考试项目了。
点击右边按钮进入预约界面,会有一系列的 checklist
包括安装插件,同意协议等操作,都完成后过个几分钟「预约按钮」才会可用,点击后预约即可,这里需要注意预约的默认时区是 UTC,先改为选择北京时间之后在进行预约。
预约完成后会收到邮件,后面就是坐等考试了。
CKA 考试主要包括下面几项内容:
详细考纲考纲参见 CKA_Curriculum。
考试开始前 15 分钟会有远程考官来做一系列的检查,如果是早上考试建议预留出时间来,避免考试开始太晚可能遇到网络问题或者被人打扰。
检查主要包括下面几项:
首先考官会要求你开启摄像头,关闭无关进程并共享电脑桌面,如果有外接显示器也需要一并分享。
摄像头开启后,考官会指导我们做一系列的操作,比如检查电脑进程、检查浏览器 tab、检查房间环境和办公桌面、桌底,跟着做就好了,要注意一下几点:
考完检查完成后就可以进入考试界面了。考试界面如下:
左边有时间条、语言选择和题目说明。题目语言可以选择英文、中文和日语,中文翻译可能略微不通顺,可以中英文对照着看。
右上角其他工具中有 notepad,可以用来保存一些命令等。
就我考完的感觉,CKA 题目难度不大,但考试面比较广, 会综合考察集群应用的生命周期管理,调度,网络,存储,集群运维,集群排错等内容。
考试时长 2 小时,有 15 ~ 20 道题目。我考的时候是 17 道。每道题目会给出需要的环境、题目要求以及所占权重,权重加起来共 100分,超过 66 分就算过。自己可以根据权重和知识点熟悉程度灵活选择做题顺序。
下面是一些考试建议:
毕竟国外的考试,网络问题还是需要考虑的,建议选择早上或者深夜考试,并准备好 VPN。我是早上六点考的试,用上喂批恩敲命令行基本没有迟钝感。
建议先把所有的题目浏览一遍,做到有的放矢。有的题目比如修改 deployment 的 replica 数只要一条命令几十秒就可以搞定,而集群升级则需要等待相关软件安装、集群组件升级完成才行,因此可以根据考试时间灵活调整做题顺序。
考试会给若干的集群,我考试时有 7 个,不同的题目会要求在不同的集群下完成,
每道题目开头都会给出对应的集群名和切换命令,因此在做提前一定要执行一遍以保证做题环境是正确的。
网上很多资料说考试环境已经配置了自动提示,但我考试时是没有的,需要自己设置:
文档地址为 enabling-shell-autocompletio,可以提前收藏好考试时直接打开复制即可。
对于一些简单操作,比如升级 Deployment 的镜像,水平扩展等尽量用命令完成。如果是需要编写 yaml 文件的题目,比如创建 Ingress、Network Policy、PV/PC,RABC 等,手敲太慢了,可以先从官方文档拷贝下来修改,为了节省时间,可将对应的文档地址组织到收藏夹中,用到的时候直接打开就行了。
下面是是我考完后简单整理的题目,大家可以作为参考。
1 . 创建 ServiceAccount 并赋予创建 Deployment 的权限。
2 . etcd 数据的备份与恢复
3 . Deployment 的的水平扩展
4 . 基于 nodeSelector 调度 Pod
5.查看 log 日志
题目很简单,一般是查看某个 Pod 的指定内容的日志然后输出到某个文件中:
kubectl logs -f PodNmae [containerName]| grep "" > file
6. 查看 Pod 的 CPU 使用
一般已经安装好了 metric server,直接用 kubectl top
命令查看即可。
7 . 根据要求创建一个多容器 Pod
8. 为 Pod 创建 NodeType 类型的 Service
9. 根据指定的的路径和 Service 创建 Ingress
10 . 根据指定规则创建 NetworkPolicy
11. 根据指定条件创建 PV、PVC 并挂载到 Pod,之后修改 PVC 的容量
12 . 给已有的 Pod 添加 sidecar 容器来收集日志
13. 升级主节点
集群升级目测是必考题,需要看清楚是升级主节点还是 worker 节点,步骤一般都是:
查看升级信息:kubeadm upgrade plan
驱逐对应节点 kubectl drain nodeName
升级 kubeadm apt-get install kubeadm=1.19.0-00
执行集群升级
kubeadm upgrade apply v1.19.3
kubeadm upgrade node
升级 kubelet: apt-get install kubeamd=1.19.0-00
完成后重新启用节点 kubectl uncordon nodeName
参考文档:Upgrading kubeadm clusters
14. 驱逐某个节点并重新调度
15 . 一道 taint 相关的题目,具体细节忘了
16. 集群排错,某个 worker 节点处于 NotReady,找出原因并恢复
这是我考试时候的最后一道题目,权重 13%,但题目不难,原因是 worker 节点的 kubelet 没有启动,ssh 登陆到 worker 节点使用 systemctl
启动就好了。
下面是一些 tip:
/etc/kubernetes/manifests/
下的 yaml 文件是否有问题。如果是为了考试的话,墙裂推荐 Udemy 的课程 Certified Kubernetes Administrator (CKA) with Practice Tests,这算是针对 CKA 认证量身定制的课程,并且附带了大量的习题,照着课程知识点过一遍做完这些习题考试基本没啥问题。这里需要注意习题练习需要威批恩,要提前准备好。
但就我个人感觉 CKA 考试难度有限,不建议为了考试而考试,重要的还是趁考试的机会系统深入的学习 K8S,下面是我最近集中学习 K8S 的一些材料,大家可以作为学习参考:
当然还有最重要的 官方文档。
老铁都看到这了来一波点赞、评论、关注三连可好
我是 AhriJ邹同学,前后端、小程序、DevOps 都搞的炸栈工程师。博客持续更新,如果觉得写的不错,欢迎来一波老铁三连,不好的话也欢迎指正,互相学习,共同进步。