很高兴自己考过了CKA,准备了很长一段时间,总算有所回报。
这次考试,花费了300$,预约的线上考试。最近看着华为云正在推广线下考试,只要一千多人民币,真是莫名心痛。先晒下证书缓解下。
很多人已经分享过自己的经验,多的我就不说了,我只说我认为有用的。
考试要求
网络要求
要×××。要求稳定,我使用的是google一年期的免费试用,自己搭建的×××。速度很稳定,但是还是断了一次,幸亏考试是实时保存的,继续做题就行。
可以申请阿里云-香港云主机;或者试用google云主机。下面的方式都搭×××的方式是基于docker,简单快捷。
s:
open***:
技巧分享
多看书多练习
华为云CKA实战
马哥kubernetes
kubernetes官网
kubernetes指南
可以先看马哥的教程先了解kubernetes是什么,然后看feisky的kubernetes指南,了解k8s概念和操作,然后看k8s官网进行英文概念理解记忆,最后看华为云cka,准备考试。最重要的就是看kubernetes官网,所有的考点基本都在上面,而且是考试唯一可以看的网页。
加快考试速度。
2.1使用命令补全:
source <(kubectl completion bash)
2.2使用别名;
alias kc='kubectl'
alias kgp='kubectl get pods'
alias kgs='kubectl get svc'
2.3能用命令行,就不要自己写yaml文件;
2.4 能够从kubernetes.io中复制粘贴的,就不要自己敲命令;复制粘贴我用的是鼠标的粘贴复制,没有使用shift+insert,ctrl+insert,不支持ctrl+c,ctrl+v。
注意审题,认真做题
3.1中英文切换审题,特别是有歧义的时候。
3.2 注意切换运行环境,kubectl config set-config。
命令行和yaml问题
考试中有关kubernetes本身的题目,除了pv和pvc,其他情况下基本都可以使用kubectl命令行去转换成yaml文件,没有命令行的可以直接粘贴复制kubernetes.io文件,请各位多加练习。可以将kubectl 命令行撸个好几遍。
不建议这个使用使用kubectl explain ,可以使用kubectl command -h更快。
常用举例
生成pod
kubectl run pod --image=nginx --restart=Never --requests=
生成job
kubectl run job --image=nginx --restart=OnFailure
生成deploy
kubectl run deploy --image=nginx --replicas=2
生成svc
kubectl expose deployment sd2 --type=ClusterIP --target-port=80 --name=sd2
生成名称空间
kubectl create ns ns
生成configmap
kubectl create configmap db2 --from-literal=nt=nt
考试策略
遇到难题不会就先过了,在考试提供的notepad上记下来,再来回头看。
我把我能够记住的题目分享出来。具体答案就不分享了,不想引导错误,提供一点思路和相关链接,仅供参考。每个人的考题内容可能不一样,要多看啊。
1.列出指定pod的日志中状态为Error的行,并记录在指定的文件上。
kubectl logs | grep bash > xxx.txt
https://kubernetes.io/docs/tasks/debug-application-cluster/debug-pod-replication-controller/
2.列出环境内所有的pv 并以 capacity字段排序
(使用kubectl自带排序功能,field字段关注下)
kubectl get pv --sort-by=.spec.capacity.storage
https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/
3.列出k8s可用的节点,不包含不可调度的 和 NoReachable的节点,并把数字写入到文件里。
kubectl get nodes; kubectl get nodes xxx -oyaml
https://kubernetes.io/docs/concepts/architecture/nodes/
4.创建一个pod名称为nginx,并将其调度到节点为 disk=stat上
nodeselector 字段
https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
5.提供一个pod的yaml,要求添加Init Container,Init Container的作用是创建一个空文件,pod的Containers判断文件是否存在,不存在则退出
init container
https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
6.指定在命名空间内创建一个pod名称为test,内含四个指定的镜像nginx、redis、memcached、busybox.
https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/
7.创建一个命名空间
kubectl create ns xx
https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/
8.在一个新的命名空间创建pod
https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/
9.列出Service名为test下的pod 并找出使用CPU使用率最高的一个,将pod名称写入文件中.
kubectl get svc test -oyaml; 查看配置内容,特别找出标签
kubectl top nodes --selector="xxx=yy"
https://kubernetes.io/docs/tasks/debug-application-cluster/debug-service/
10.创建一个Pod名称为nginx-app,镜像为nginx,并根据pod创建名为nginx-app的Service,type为NodePort
kubectl expose xx
https://kubernetes.io/docs/tasks/access-application-cluster/service-access-application-cluster/
11.创建一个nginx的daemonset,保证其在每个节点上运行,注意不要覆盖节点原有的Tolerations
https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/
12.将deployment为nginx-app的副本数从1变成4
kubectl scale deployment xx --replicas=4
https://kubernetes.io/docs/tasks/run-application/scale-stateful-set/
13.创建nginx-app的deployment ,使用镜像为nginx:1.11.0-alpine ,修改镜像为1.11.3-alpine,并记录升级,再使用回滚,将镜像回滚至nginx:1.11.0-alpine
kubectl rollout xx
https://kubernetes.io/docs/tasks/run-application/rolling-update-replication-controller/
14.根据已有的一个nginx的pod、创建名为nginx的svc、并使用nslookup查找出service dns记录,pod的dns记录并分别写入到指定的文件中
busybox:1.28
https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/
15.创建Secret 名为mysecret,内含有password字段,值为bob,然后 在pod1里 使用ENV进行调用,Pod2里使用Volume挂载在/data 下
https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/
https://kubernetes.io/docs/concepts/storage/volumes/
16.使node1节点不可调度,并重新分配该节点上的pod
kubectl drain nodex
kubectl uncordon nodex
https://kubernetes.io/docs/concepts/architecture/nodes/
17.使用etcd 备份功能备份etcd(提供enpoints,ca、cert、key)
https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/
https://blog.51cto.com/9406836/2409012
https://github.com/mmumshad/certified-kubernetes-administrator-course-answers/blob/master/etcd-backup-and-restore.md
18.给出一个失联节点的集群,排查节点故障,要保证改动是永久的。
kubectl get nodes 故障节点 -oyaml 查看故障
远程到故障节点启动kubelet服务
https://kubernetes.io/docs/tasks/debug-application-cluster/debug-cluster/
19.给出一个集群,排查出集群的故障。集群无法使用kubectl。
集群无法使用kubectl,先到主节点,查看kubelet配置,static-pod配置文件出错,更改重新
https://kubernetes.io/docs/tasks/debug-application-cluster/debug-cluster/
20.创建static pods.
https://kubernetes.io/docs/tasks/administer-cluster/static-pod/
21.给出一个集群,将节点node1添加到集群中,并使用TLS bootstrapping
https://github.com/mmumshad/certified-kubernetes-administrator-course-answers/blob/master/tls-bootstrap-worker-node-2
https://github.com/opsnull/follow-me-install-kubernetes-cluster/blob/master/07-2.kubelet.md
22.创建一个pv,类型是hostPath,位于/data中,大小1G,模式ReadOnlyMany
https://kubernetes.io/docs/concepts/storage/persistent-volumes/
23.创建一个pod,使用hostpath。
https://kubernetes.io/docs/concepts/storage/volumes/
下面这些都是我我认为写的很好,考试一定会用到的资料,如果大家考CKA,请一定要看。
CKA学习资源汇总,只要找到CKA部分就行
ETCD备份+node节点认证
CKA-Studyguide
CKA考试知识总结
CKA考试经验总结