对于云原生&k8s相关证书很早就想考一个,越早考试越好,工作的原因一直推脱到今年,眼看着它价格涨了两次(说到这里有点小肉疼了)。

最近终于有空腾出一周时间全身心备考了,由于自己工作生产环境一直使用的kubernetes,所以,这次我自己的计划是考前多吸收考点,多做大量考题;

下面总结整理一下最近一周我CKA考试的历程,希望对你有帮助。

CKA全面认识

1、CKA是什么?

CKA全称:Certified Kubernetes Administrator 是由CNCF推出的第一个基于kubernetes的认证,整个考试全部是实操题,且监考极其严格,所以CKA是全球公认的Kubernetes含金量最高的证书之一。

2、CKA证书有效期多长时间?

CKA证书的有效期为3年,但自2024年4月1日起,新认证的CKA证书有效期变更为2年。在2024年4月1日前通过考试并获得证书的学员,其证书仍然保持3年的有效期。

证书过期后需重新参加考试,并且需要满足考试的要求。考试的形式是在线考试,考试时间2小时,考试题目17道,满分100分,66分及格。

3、CKA有什么用?

对企业而言,Kubernetes认证服务供应商(KCSP)一般需要有3名CKA。 对个人而言,获得CKA认证,是检测自己学习成果的一个重要指标。一来可以系统的学习知识, 二来可以通过证书向企业证明自己的技术实力。

4、CKA、CKAD、CKS对比分析

其实CNCF基金会下有关k8s的认证主要这三个,三个证书侧重点不一样,可以根据自己实际情况选择。

  • CKA:Certified Kubernetes Administrator, 侧重于kubernetes系统管理,比如基本安装以及配置和管理生产级集群的能力,涉及到Kubernetes网络、存储、安全、维护、日志记录和监控、应用生命周期、故障排除、API对象原语等关键概念。
  • CKAD:Certified Kubernetes Application Developer, 侧重于Kubernetes设计、构建和部署云原生应用程序,比如使用Kubernetes核心原语来创建/迁移、配置、公开和观察可伸缩的应用程序。
  • CKS:Certified Kubernetes Security,侧重于Kubernetes安全,比如构建、部署和运行时保护基于容器的应用程序和Kubernetes平台安全。

通过备考三个证书考点和考题,CKA的知识点要涉及更全面相对更难一些,如果你考过了CKA再去考CKAD或者CKS,你会很容易考试通过,而里面的知识点有60-80%都是有关联的。

5、CKA主要考试那些知识点?

第一部分:集群架构,安装和配置(占比25%):

  • 管理基于角色的访问控制(RBAC)
  • 使用Kubeadm安装基本集群
  • 管理高可用性的Kubernetes集群
  • 设置基础架构以部署Kubernetes集群
  • 使用Kubeadm在Kubernetes集群上执行版本升级
  • 实施etcd备份和还原

第二部分:工作负载和调度(占比15%):

  • 了解部署以及如何执行滚动更新和回滚
  • 使用ConfigMaps和Secrets配置应用程序
  • 了解如何扩展应用程序
  • 了解用于创建健壮的、自修复的应用程序部署的原语
  • 了解资源限制如何影响Pod调度
  • 了解清单管理和通用模板工具

第三部分:服务和网络(占比20%):

  • 了解集群节点上的主机网络配置
  • 理解Pods之间的连通性
  • 了解ClusterIP、NodePort、LoadBalancer服务类型和端点
  • 了解如何使用入口控制器和入口资源
  • 了解如何配置和使用CoreDNS
  • 选择适当的容器网络接口插件

第四部分:存储(占比10%):

  • 了解存储类、持久卷
  • 了解卷模式、访问模式和卷回收策略
  • 理解持久容量声明原语
  • 了解如何配置具有持久性存储的应用程序

第五部分:故障排除(占比30%):

  • 评估集群和节点日志
  • 了解如何监视应用程序
  • 管理容器标准输出和标准错误日志
  • 解决应用程序故障
  • 对群集组件故障进行故障排除
  • 排除网络故障

CKA考前准备

报名缴费

报名地址:https://training.linuxfoundation.cn/certificates/1

价格比以前都贵了,建议等黑五的下单,大概优惠五折的样子。

另外,这里可以选择中文监考或者英文监考,建议选择中文,当然二者差别不大,考题即便是英文也能大概看明白。

下单成功后,登录后台,查看订单的地方会有一个考试券,把这个记录下来,后面会用到。

激活考试码

整个考试流程可以参考这里:https://training.linuxfoundation.cn/news/308

第一步,需要注册一个 Linux Foundation ID(LFID),注意自己名称,一定要和身份证、护照保持一致,也建议和实名认证保持一致,不然后面预约考试过不了。

注册和预约考试地址:https://trainingportal.linuxfoundation.org/

第二步,拿到之前的考试券,注册考试,正常情况下不注册考试,考试券只有1个月的有效期, 注册考试券后只需要1年内考试就可以。

第三步,考试预约

  • 预约考试时间:整个考试时间2个小时,建议选择上海时间,凌晨1点-2点考试,因为考试服务器都在海外,这个时间点不会很卡。
  • 预约考试语言:考试语言和监考老师语言,这里直接选择中文即可。
  • 电脑环境检测:考试前需要对考试系统环境进行检测,浏览器建议用chrome,不建议提前安装PSI,考试前半个小时安装PSI即可,考试前头一天,建议将电脑上的向日葵、Todesk、Vmware、lemon等这些禁用或者卸载掉,我这次就是因为这个耽误了十几分钟。

预约成功以后,就可以安心备考了。

考试环境注意事项

考前,建议备一个VPN,但是考试的时候建议不要用,除非你的网络特别卡,卡的都退出考试系统了,这个时候可以选择用VPN。

从考前到进入真正考试时间,需要如下五步准备:

  • 第一步:PSI环境检测,check成功才能考试,一定一定要提前半个小时,这个会折腾20分钟;
  • 第二步:人脸识别,需要用电脑摄像头进行拍照;
  • 第三步:身份认证信息,需要拿身份证和护照对着摄像头拍照,这个考官会检查
  • 第四步:考官会让你拿着笔记本摄像头展示四周环境,考试桌子上桌子下面都不能有任何东西,且四周1米距离内不能有任何东西,身边不能有任何人谈话,手机建议放到1米外以上距离,让考官看到最好。
  • 第五步:考官会让你举起手检查手里是否夹东西,耳朵两侧是否有耳塞等等。

上面都OK了,考官会给你确认是否可以考试,你回答OK即可,从这个时间才算考试时间。

考试时间&考题&考试结果

为什么考试时间需要单独拎出来说呢,就是因为考试时间总共就2个小时,17道题,说长也长,说短也短。

考试系统服务器再美国,经常会遇到卡顿现象,所以做一道题有的时候可能会很长。

对于备考时间非常短的同学,建议再电脑桌子对面放置一个钟表或者自己带一个手表,因为考试系统里时间是美国时间,很容易过点。

另外,关于考试题,建议刚开始先选择简单的,因为有60-70%都可以通过命令行解决掉;

每做一道题,切记一定要执行kubectl config context xxxxk8s选择考题指定集群;

对于比如PV/PVC、Netpol需要手写Yaml这些,建议后做,集群升级可以放到最后再做。

一般考试结束以后,成绩会在24小时后出来,考试通过分数是66分;如果因为考试环境问题无法进入考试,建议尽快联系监考老师;考试结果不理想,还有一次考试机会,后面直接重新约考即可。

考题解析

下面是一些从网上搜集的八道考题,从我个人角度觉得稍微有一些难度的考题,这些考题和实际考题类型基本相似,大家不妨自己做实验体验一下,所以,能手写k8s资源对象yaml文件,就手写,这样才能节省更多时间。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
1、创建一个名为deployment-clusterrole且仅允许创建以下资源类型的新 ClusterRole:Deployment,StatefulSet,DaemonSet;
在现有的namespace app-team1中创建一个名为cicd-token的新ServiceAccount限于namespace app-team1中,将新的 ClusterRole deployment-clusterrole绑定到新的ServiceAccount

2、通过pod label name=cpu-loader,找到运行时占用大量 CPU 的 pod,并将占用 CPU 最高的 pod 名称写入文件 /opt/KUTR000401/KUTR00401.txt(已
存在)。

3、在现有的namespace my-app中创建一个名为allow-port-from-namespace的新NetworkPolicy;确保新的 NetworkPolicy 允许 namespace echo 中的 Pods 连接到 namespace
my-app 中的 Pods 的 9000 端口;进一步确保新的 NetworkPolicy:不允许对没有在监听 端口 9000 的 Pods 的访问,不允许非来自 namespace echo 中的 Pods 的访问。

4、请重新配置现有的deployment front-end以及添加名为http的端口规范来公开现有容器nginx的端口80/tcp;创建一个名为front-end-svc的新service,以公开容器端口http;配置此service,以通过各个Pod所在的节点上的NodePort来公开他们。

5、如下创建一个新的 nginx Ingress 资源:名称: ping,Namespace: ing-internal,使用服务端口5678在路径/hello上公开服务hello,可以使用以下命令检查服务hello的可用性,该命令应返回hello:curl -kL <INTERNAL_IP>/hello

6、创建一个新的 PersistentVolumeClaim,名称: pv-volume,Class: csi-hostpath-sc,容量: 10Mi;创建一个新的 Pod,来将PersistentVolumeClaim作为volume 进行挂载:名称:web-server,Image:nginx:1.16,挂载路径:/usr/share/nginx/html,配置新的Pod,以对volume具有 ReadWriteOnce权限。最后,使用 kubectl edit 或 kubectl patch 将 PersistentVolumeClaim 的容量扩展为70Mi,并记录此更改。

7、使用busybox Image来将名为sidecar的sidecar容器添加到现有的Pod 11-factor-app中;新的 sidecar 容器必须运行以下命令:/bin/sh -c tail -n+1 -f /var/log/11-factor-app.log;使用挂载在/var/log 的 Volume,使日志文件11-factor-app.log可用于sidecar 容器;除了添加所需要的 volume mount 以外,请勿更改现有容器的规格

8、现有的Kubernetes集群正在运行版本1.30,仅将master节点上的所有Kubernetes 控制平面和节点组件升级到版本 1.31,确保在升级之前drain master节点,并在升级后uncordon master节点.
可以使用以下命令,通过 ssh 连接到 master 节点:ssh master01
可以使用以下命令,在该 master 节点上获取更高权限:
sudo -i
另外,在主节点上升级 kubelet 和 kubectl。 请不要升级工作节点,etcd,container 管理器,CNI 插件, DNS 服务或任何其他插件。

CKA考试总结

最后,放一张CKA证书收尾:

CKA

通过这次CKA认证考试,整体来看难度适中,我觉得实操Kubernetes还是很重要的,尤其对于DevOps工程师;

其实,要想高分通过,没有任何捷径可言,就是多吸收上面列举的知识点,多练习,多实操。

最后,我想说的是考试只是一种形式,目的是为了证明自己熟练掌握k8s的技能,最终将这些技能应用到实际工作当中。