CKA认证
Last updated
Last updated
关于CKA考试CKA(Certified Kubernetes Administrator)是CNCF基金会(Cloud Native Computing Foundation)官方推出的Kubernetes管理员认证计划,用于证明持有人有履行Kubernetes管理的知识,技能等相关的能力。除了对于个人技能提供认证以外,如果企业想要加入CNCF基金会的KCSP计划(Kubernetes认证服务提供商)也需要企业至少有3名及以上工程师的通过CKA认证考试。考试注册地址:https://www.cncf.io/certification/expert/
CKA考试费用参与人员需要支付300$的考试费用,因此一张双币信用卡是必须的。
报考地址。https://www.cncf.io/certification/cka
购买了CKA考试,完成后CNFC会给出Exam Preparation Checklistcka1
1、有效期一年。在一年内需要定好考试的时间。
2、提前15分钟进入考试系统, 提前进入考试系统后并不是立马开始考试,而是预留给考官时间考察你的考试环境
3、考试时间 ,注意报考的TimeZone。默认是UTC时间,请改成China Time。
4、修改考试时间,考试前24小时且工作日内可更改。
1.1 CKA/CKAD考纲
这部分基本变动不大,除了分值,考纲同步更新。文档中几点需要留意
Candidate Requirements(考试环境要求) :
1、谷歌浏览器、稳定的网络、摄像头、麦克风;
避坑提示:
重点提一下摄像头。考试前请充分测试摄像头,考官会要求你在摄像头前出示护照,摄像头要能够对焦并清晰地拍摄到上面的文字。
实践证明罗技 C270i不能自动对焦。
2、干净整洁的桌面。桌面、桌底、键盘下上不得放任何东西。
3、摄像头的线要够长,允许移动。(笔记本就不用担心了)
Retake Policy
重考策略,有一次免费重考的机会。一年后过期
Exam Rules and Policies
考试规则,这个熟读一下,环境要求必须安静、考生背后不能有玻璃或者强光,考试期间不能大声朗读,不能吃、喝。除非要求暂停考试(暂停考试不停止时间)、考试期间脸不能离开摄像头、不允许任何电子设备,不允许在考试系统外记录任何笔记。等等
Policy on Warnings and Exam Terminations
Exam Misconduct
这两块也大致浏览一下。避坑,否则考官会无条件终止你的考试。
注意,只允许打开多一个Chrome的 Tab,Tab只允许https://kubernetes.io/docs/和https://kubernetes.io/blog/。使用官方文档内的搜索功能可能会搜出除上述两个地址之外的链接,要注意甄别!
考生有义务甄别不是上述两个地址的网址,千万不要点开!
主要看两部分:Technical Instructions 、CKA & CKAD Environment ;这份文档中,Technical Instructions与考生手册重复了。主要留意一下Ctrl+W 和 Ctrl+C 、Ctrl+V的替代键。以及考试中的k8s环境,要用到
kubectl config use-context <环境名称>进行替换,题目中会有提醒。
除了HOME CONTRIBUTE之外,其余栏目都要仔细看过一遍。SETUP CONCEPTS TASKS TUTORIALS REFERENCE里面的与考纲相关的均不能放过,我就因为大意漏了kubectl Cheat Sheet,超简单的第一题加上考试系统故障,浪费了快10min(涉及GCE等云服务的、集群联邦除外,不在考点内,可不看),英文文档难啃,难免有遗漏,建议结合JimmySong的Kubernetes-handbook加深印象。最好使用二进制部署一遍,尤其是kubelet等组件的配置,再回到英文doc定位考点。
考试全程与考官在Live Chat上英文交流(文字),考前考官会跟你提示注意事项。考验平时英语作文词汇量的时候到了。国外的考官都很人性化的,考试中有意外状况,询问考官,并向考官争取你应有的权益。举例一下我遇到的 场景(基本上是大意,英文我就不写了,渣渣):
1、考试正式开始前,罗技摄像头无法清晰看到护照,向考官申请使用笔记本电脑摄像头验证。验证完成后请求考官使用回台式机重新考试(屏幕大有好处)
2、考试过程中,考试系统崩溃,提示,lost connection,询问考官什么情况,是我电脑的问题还是系统问题。考试的中断是否会影响我的计时。我能延长多少时间等等。
3、考试中如果有半边脸不小心离开摄像头,考官会在Live Chat会弹出窗口提示你,这时候请注意。并向考官表达歉意。
1、审题:
审题一定要仔细再仔细。题目有中文翻译的版本,但标点符号特别少,断句可能会出现问题,建议切换成英文版本再看一遍。
2、答题策略
整场考试总计24道题,分值高的题目花费的时间较多,我遇见的是集群故障排查、和TLS Bootstraping,以及节点失联、一般较为靠后。但不是所有分值高的题目都在最后,(我的最后一题是创建PV,2%)。合理规划答题策略。
3、网络问题
根据同行交流经验所得,CKA考试普遍网络较慢,表现为考试系统Lost Connection,终端反应较慢、无法进入终端的情况:
Lost Connection:在考试计时器停止后,考官会给你相应的额外时间。
无法进入终端:这种情况使用考试系统上的reflash exam window按钮。刷新后重新进入终端,此时会退出特权模式,需要重新使用sudo -i 进入。且bash环境需要重新配置。(bash这块不确定,反正kubectl的自动补全我是执行了好几次)
终端反应慢:这块无解,只能重其他技巧节省时间。
不要刷新浏览器!不要刷新浏览器!不要刷新浏览器!刷新浏览器会导致考试被终止。
4、节省时间的技巧
考试题目刷出来较慢,建议开考时,将考题列记录考试系统notepad里面,过一遍(后悔没这么做)。
kubectl bash自动补全的命令一定要用,最好记录在notepad上。切换环境,关键时刻可以复制粘贴到终端内。
考试中的终端是可以复制黏贴的、但是鼠标姿势要对,多尝试几次(我一开始以为复制不了,白敲了很久),无论如何请多使用终端内复制粘贴的功能(Windows下是Ctrl+Insect复制,Shift+Insect)。终端内复制粘贴一个yaml是毫无压力的,不要被Important Tip和考生手册给误导了。
Important Tip和考生手册里面的Technical Instructions有这么一句话,容易被误导
Ctrl+C & and Ctrl+V are not supported in your exam terminal, nor is copy and pasting large amounts of text. To copy and paste limited amounts of text (1−2 lines) please use;
kubectl explain 查定义,太慢了,查个pod.spce.containers.livenessProbe.initialDelaySeconds只能一层层的查,可能是我不熟悉grep + 正则(脑子转的不够快)乖乖在doc上找案例Shift+Insert(粘贴)更快
善用官方文档的搜索功能,记住一些考点的关键字。有些知识点在CONCEPTS、TASKS、TUTORIALS、REFERENCE 连番出现,不好查找,搜索关键字较长时,搜索效率会低下。
比如,查找Pod和Service的解析记录,搜索组合关键字Service DNS效率太低,不如直接搜索nslookup
与考点相关的文档可以提前加入收藏夹,利用地址栏自动补全功能跳转到对应的文档 @Kevin Wang
避免手敲yaml,能不手敲yaml的,就别手敲,尽量从文档上复制,手敲的效率太低了,碰上终端响应慢,那是时间的杀手!!
尽量使用命令创建Pod、deployment、service
养成使用--dry-run、kubectl apply -f、kubectl delete -f的习惯,同时将答案和yaml写入到文件里,方便根据命令模板修改yaml,以及后面检查答案时重做题目。举个例子,使用run命令忘记增加namespace了
见到不懂或忘记的命令参数,甭管什么kubectl,etcdctl的命令,盘他 -h,-h是万能的。里面有示例
最后,考试环境中一定要留意k8s环境和尤其是主机名和用户名,默认可以使用ssh 进入 node, 进入node做完题目后记得退出,不然节点内是无法ssh到下一个题目的node当中去的,节点内终端一般显示student@<worknodename>
重点来了。由于考试不允许将考题记录在考试系统外,凭着自己的记忆,加上浏览器历史纪录,记录下22题(总共24题),内容有部分差异,考题中的pod之类的镜像、命名肯定都记不清了,凭空造的,请见谅。
列出环境内所有的pv 并以 name字段排序(使用kubectl自带排序功能)
考点:kubectl命令熟悉程度
列出指定pod的日志中状态为Error的行,并记录在指定的文件上
考点:Monitor, Log, and Debug
创建一个pod名称为nginx,并将其调度到节点为 disk=stat上
考点:pod的调度。
提供一个pod的yaml,要求添加Init Container,Init Container的作用是创建一个空文件,pod的Containers判断文件是否存在,不存在则退出
考点:init Container。一开始审题不仔细,以为要用到livenessProbes
指定在命名空间内创建一个pod名称为test,内含四个指定的镜像nginx、redis、memcached、busybox
考点:kubectl命令熟悉程度、多个容器的pod的创建
创建一个pod名称为test,镜像为nginx,Volume名称cache-volume为挂在在/data目录下,且Volume是non-Persistent的
考点:Volume、emptdir
参考:Volumes
列出Service名为test下的pod 并找出使用CPU使用率最高的一个,将pod名称写入文件中
考点:获取service selector,kubectl top监控pod资源
创建一个Pod名称为nginx-app,镜像为nginx,并根据pod创建名为nginx-app的Service,type为NodePort
考点:Service
创建一个nginx的Workload,保证其在每个节点上运行,注意不要覆盖节点原有的Tolerations
这道题直接复制文档的yaml太长了,由于damonSet的格式和Deployment格式差不多,我用旁门左道的方法 先创建Deploy,再修改,这样速度会快一点
考点:DaemonSet
参考:DaemonSet
将deployment为nginx-app的副本数从1变成4。
考点:deployment的Scaling,搜索Scaling
创建nginx-app的deployment ,使用镜像为nginx:1.11.0-alpine ,修改镜像为1.11.3-alpine,并记录升级,再使用回滚,将镜像回滚至nginx:1.11.0-alpine
考点:资源的更新
根据已有的一个nginx的pod、创建名为nginx的svc、并使用nslookup查找出service dns记录,pod的dns记录并分别写入到指定的文件中
考点:网络相关,DNS解析
创建Secret 名为mysecret,内含有password字段,值为bob,然后 在pod1里 使用ENV进行调用,Pod2里使用Volume挂载在/data 下
14.secret.yaml
14.pod1.yaml
14.pod2.yaml
考点 Secret
参考:Secret
使node1节点不可调度,并重新分配该节点上的pod
考点:节点调度、维护
参考:[Safely Drain a Node while Respecting Application SLOs]: (https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/)
给出一个集群,排查出集群的故障
这道题没空做完。kubectl get node显示connection refuse,估计是apiserver的故障。
考点:故障排查
给出一个节点,完善kubelet配置文件,要求使用systemd配置kubelet
这道题没空做完,
考点我知道,doc没找到··在哪 逃~ε=ε=ε=┏(゜ロ゜;)┛
给出一个集群,将节点node1添加到集群中,并使用TLS bootstrapping
这道题没空做完,花费时间比较长,可惜了。
考点:TLS Bootstrapping
创建一个pv,类型是hostPath,位于/data中,大小1G,模式ReadOnlyMany
考点:创建PV 参考:persistent volumes
考纲隔几个月会更新,考前请留意GitHub上Latest commit 时间,一般变动不大,留意考点分值比重,以及考点中的细项github