栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

新鲜出炉!最新CKA备考指南!!

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

新鲜出炉!最新CKA备考指南!!

写在前面

2022年7月1号参加考试,2号就出成绩了,考试通过,可喜可贺。
特写此博客以帮助要准备CKA考试的同学,预祝大家考试通过!!

1. 备考篇 1.1 学习

首先明确一下,我们的初衷:不是只想通过CKA考试,我们还是希望通过准备CKA学到Kubernetes的一些知识。(如果只想通过考试,感觉只要把模拟题和真题练习地很顺利,也可以通过,毕竟考试要求66分即可,但是这对我们并没有太大的帮助吧,只是多了一本证书而已。)
 说下我的备考,除快速看完购买的CKA课程外,还看了《Kubernetes in Action》。当然,如果觉得看英文的教材十分痛苦,也可以直接看这本书。

推荐书籍《Kubernetes in Action》,由浅入深地介绍了Kubernetes的几大资源,pod、ReplicationController、ReplicaSet、DasmonSet、Deployment等等。为什么会存在,怎么去使用等等,对自己理解整个Kubernetes架构有很大的帮助。

1.2 模拟题

预约考试的链接处,有模拟练习入口:

 几点注意

  • 模拟题比真题难 —— 所以一开始不会也不用特别在意,多练习几遍就行,主要是为了找到解题感觉。
  • 模拟题有两次机会,每次可以练习 36 hours —— 建议考前几天就开始做模拟题,自己做一遍,按照答案再去敲一遍。
  • 模拟题答案参考:CKA Simulator Kubernetes 1.22 —— 这里有题目有答案。

2. 考试篇 2.1 考试提醒
  1. 携带护照,因为预约考试的时候输入的是名字拼音,护照上有英文名字,这样可以方便考官check。
  2. 考试环境已发生变化,不用自己记下Kubernetes官网link,并在tab打开了,考试题目中会简单提示用到的知识点:比如Pod,这时候点击Pod会自动在考试的VRA机器里面的火狐浏览器打开。
  3. 提前半小时进入考试,前期需要按照步骤检查环境等,花费时间会比较久。
  4. 进入 root 特权账户使用:sudo -i。
    – 如果进去了特权账户,退出的话,输入: exit。
    – 遇到需要 ssh 切换node的时候,建议重新打开一个tab,避免自己忘记 exit出去,同时这样也不影响另一个tab所在的node (考试的时候大部分在这个node里面操作)。
  5. 在考试环境里,可以直接使用 k 代替 kubectl。另外,如果记住 resource type 的简写,也可以帮助考试:Command line tool (kubectl) 。
  6. 使用 nano edit yaml,这是因为:使用 vi 的话,在考试环境里 copy yaml内容进去后,需要处理缩进和对齐的问题。或者自己去设置下Terminal的配置。
  7. 如果题目要求切换 context,第一步就要切换到对应的 context
    kubectl config use-context k8s
  8. 建议把升级kubeadm,还原、备份etcd的题目放在最后做,避免出现问题影响其他题目的操作。没有做的题目可以标记起来。
2.2 真题练习

三套真题参考连接:

  • 第一套:2022年CKA 考试题 2022年3月1日刚过
  • 第二套:k8s-cka考试题库
  • 第三套:cka考题总结2021年12月

 快速说下这三套题目的特点:

  • 第一套题目部分答案比较仔细,代码处会说明下哪里是需要注意的点。但是有些内容比如PV、PVC等,只是留了官网链接。
  • 第二套题目相对第一套来说,会详细说明在做题目的时候,参考的是官网的哪个例子,copy了哪个yaml文件来进行修改。
  • 第三套题目的优点是有英文题目,可以帮助熟悉考试题目,避免考试的时候看到英文题目觉得眼生,而且每道题目都有答案。但里面的第5题:网络策略NetworkPolicy,答案建议参考第一套题目,因为觉得需要加上 namespaceSelector 才算完整。

最后提醒:
真题要反复练习,千万不要觉得简单,看看就行。我考前就犯了这个错误,觉得sidecar处理日志那个题目简单,只练习了一遍。考前的几个小时,只是简单看了看,考试的时候,就遇到pod启动之后,只成功运行了一个container。

部分真题记录如下:

2.2.1 排查集群中故障节点

切换节点:
ssh node01
进入特权用户:
sudo -i
检查kubelet服务:
systemctl status kubelet
启动服务,并设置为开机启动:
systemctl restart kubelet
systemctl enable kubelet
最后检查:
systemctl status kubelet

2.2.2 找CPU消耗最高的Pod

找出label name=cpu-user CPU消耗最高的Pod,注意如果没有指明 namespace,需要使用 -A 来在查看所有 namespace。
kubectl top pod -A -l name=cpu-loader --sort-by=cpu
将 pod 名字写到文件中,注意这里的 POD_NAME字以实际名字为准:
echo "POD_NAME" >> /opt/KUTR00701/KUTR00701.txt

2.2.3 检查Node节点的健康状态

检查集群中有多少节点为Ready状态,记录总数为A:
kubectl get node | grep -i ready
查看节点是否包含NoSchedule污点的,注意 NODE_NAME用上面get到的节点名字依次替换。这时候记录总数为B:
kubectl describe node NODE_NAME | grep Taint | grep NoSchedule
x = A - B,将x的值写入文件中:
echo x >> /opt/KUSC00702/kusc00702.txt

 注意

  1. 这里的 grep -i 是忽略字符大小写的差别。
  2. 如果要查找日志内容,也可通过 grep,如:kubectl logs foo | grep "要搜的内容"。
2.2.4 Expose service - 四层负载均衡

请重新配置现有的部署front-end以及添加名为http的端口规范来公开现有容器 nginx 的端口80/tcp。
创建一个名为front-end-svc的新服务,以公开容器端口http。
配置此服务,以通过在排定的节点上的 NodePort 来公开各个 Pods。

此题可以参考:第一套真题:2022年CKA 考试题 2022年3月1日刚过 - 3 暴露服务

  1. 编辑deployment
  2. 创建服务:
    kubectl expose deployment front-end --type=NodePort --port=80 --target-port=80 --name=front-end-svc # 这里的 --name 不要忘了。
2.2.5 ingress - 七层负载均衡

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

此题可以参考:第一套真题:2022年CKA 考试题 2022年3月1日刚过 - 4 创建Ingress

YAML文件修改如下:

2.2.6 sidebar代理

此题可以参考:第二套真题:2022年CKA 考试题 2022年3月1日刚过 或 第三套真题:cka考题总结2021年12月 - 第15题 Sidecar代理

 注意

  • 一定要自己输入命令一步一步练习(我考试有考到这个题目)。
  • sidecar container本身也需要配置volumeMounts。
2.2.7 k8s版本升级

按照官网步骤升级:Upgrading kubeadm clusters

 几点注意:

  • 考试的时候,要求升级的是 master node,所以我们直接参考Upgrading control plane nodes部分即可。
  • 需要先用ssh切换到需要升级的node。
  • 如果需要查看具体的version,可通过:apt-cache policy kubeadm | grep 1.22.0 #查看支持哪个版本,返回可能是:1.22.0-00。(但考题一般会具体说明需要升级的版本,所以这一步不是必须)。
  • 考试环境没有hold kubeadm,所以不用run apt-mark unhold kubeadm,直接run apt-get update && apt-get install -y kubeadm=1.24.x-00 (#replace x in 1.24.x-00 with the latest patch version)即可。
  • 如果标明etcd不要升级,记得添加 --etcd-upgrade=false。kubeadm upgrade apply v1.22.0 --etcd-upgrade=false
  • 按步骤升级kubectl和kubelet。
  • 最后不要忘记 uncordon node。

在升级完成后,可以通过如下命令,确认一下升级后的版本信息:

$ kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.8"…
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.8"…
$ kubelet --version
Kubernetes v1.21.8
2.2.8 etcd备份恢复

在官网Operating etcd clusters for Kubernetes文档中,可以查看 etcd备份和恢复的命令介绍。

  1. 先备份,Backing up an etcd cluster
$ export ETCDCTL_API=3
$ etcdctl --endpoints=https://127.0.0.1:2379 --cacert= --cert= --key=  snapshot save 
  1. 还原,Restoring an etcd cluster
$ export ETCDCTL_API=3
$ etcdctl --endpoints=https://127.0.0.1:2379 --cacert= --cert= --key=  snapshot restore 

 注意
我在考试的时候,输入restore命令还原的时候,有报permission error,后面据说输入 sudo -i可以解决这个问题。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1005757.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号