标签: CKA认证
- 该话题包含 0个回复,1 人参与,最后由
Allen Jun ⁰⁵¹⁵ 更新于 2年、 5月前 。
-
作者帖子
-
-
1、仔细看题目。-【中英文切换比对下】,切到指定集群环境——4%
!先kubectl get namespace,确认下要求的ns是否存在(一般存在)
~按照正常操作,注意–resource=deployments, statefulsets, daemonsets,后面有复数
~创建serviceaccount
~创建rolebind
kubectl create rolebinding cicd-clusterrole –clusterrole=deployment-clusterrole –serviceaccount=app-team1:cicd-token -n app-team1
~最后 kubectl get rolebinding -n [ns-name]
————记住一句话,如果命令记不住就加-h全有示例,就用kubectl create clusterrole/rolebinding -h
2、驱逐,仔细看屏幕-【中英文切换比对下】,然后切换到指定集群环境——4%
!kubectl cordon [node-name]
!kubectl drain [node-name] –ignore-daemonsets –delete-local-data –force
!下一题
3、升级,仔细看屏幕,【中英文对照】,切换到指定环境,一定要注意!!——7%
前面一次大概率没有切环境,导致节点是notready无法完成
同时又在后面手贱的重启了docker服务,直接api-server服务全挂了,导致3-4题都有问题
!ssh master
!sudo -I
!kubectl cordon [master]
!kubectl drain [master] –ignore-daemonsets
!apt-get install kubeadm=1.20.1-00 -y
!kubeadm upgrade plan
!kubeadm upgrade apply v1.20.1 –etcd-uprade=false
!kubectl uncordon [master]
!apt-get install kubectl=1.20.1-00 kubelet=1.20.1-00 -y
!systemctl restart kubelet
!稍微等一会,get node 确认升级
————{官网操作习惯的熟悉——建议准备两套策略}
kubectl get nodes——在初始节点确认状态
ssh mk8s-master-0
Sudo -i
kubectl cordon mk8s-master-0[确认主节点不可被调度]
#get node中,有SchedulingDisabled
kubectl drain mk8s-master-0 –ignore-daemonsets
#这里开始,node会出现notready状态
apt-mark unhold kubeadm kubectl kubelet ——(全部hold)
apt-get update && apt-get install -y kubeadm=1.20.1-00 kubelet=1.20.1-00 kubectl=1.20.1-00
apt-mark hold kubeadm kubectl kubelet
#进行下面步骤时,master会处于notready状态导致你无法执行apply,
#就可以考虑重启master的kubelet 和 kubectl,使master恢复到ready状态
systemctl daemon-reload
systemctl restart kubelet
kubeadm upgrade plan
kubeadm upgrade apply v1.20.1 –etcd-upgrade=false
kubectl uncordon mk8s-master-0
!重启master的kubelet 和 kubectl
systemctl daemon-reload
systemctl restart kubelet
!注意检查kubectl version 、kubeadm version版本情况,get node也再次确认一遍
!最后回去初始节点,get node,确认一遍后,进入第四题
4、备份,与第三题一起,注意从第三题结束的情况切回到student的角色。【记切两次,因为sudo -I 和 ssh 要切两次才能切回到初始点】——7%
!确认etcd安装及版本,若是版本2,按照以下走。若是版本3,省略前面使用版本3的办法
!ETCDCTL_API=3 etcdctl snapshot save /xxx/xxx/xxx.db –endpoints=https://172.0.0.1:2379 –cacert=/opt/xxx/ca.crt –cert=/opt/xxx/etcd-client.crt –key=/opt/xxx/etcd-client.key
![环境因为是ubuntu环境]
#注意查看,/etc/kubernetes/manifests/ ,若没有就忽略此项
!systemctl cat etcd 【确认数据路径】
!确认下etcd文件路径的属组和所有者,ls -l /var/lib/etcd/default.etcd(因为恢复时候会指定所属)
!mv /var/lib/etcd/default.etcd /var/lib/default.etcd.old(备份并移出etcd数据目录default.etcd文件,其他友商的解法为rm 删除etcd/default.etcd文件,个人觉得备份更好一点,至少历史数据没丢~)
————!systemctl stop etcd【停止etcd服务】
!ETCDCTL_API=3 etcdctl snapshot restore /xxx/xxx/xxx.db –data-dir=/var/lib/etcd/default.d(上文确认路径)
————!Chown -R etcd:etcd /var/lib/etcd/,将属组与所有者还给etcd
————!Systemctl start etcd【启动etcd服务】
!kubectl get node
!下一题
5、网络策略,注意切换环境【中英文对照】——7%
前面一次考试,没有做标签补充,所以这题基本也算挂了
!检查ns的情况,kubectl get ns,若不存在ns,请自行创建ns
!不论创建ns,还是已有ns,都需要kubectl describe ns,确认下里面的标签,[一般情况下没有,需要自己创建]
!kubectl label namespace my-app name=respect
!官网yaml复制,编辑指定要求
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: [命名]namespace: my-app
spec:
podSelector: {}policyTypes:
– Egress
ingress:
– from:
– namespaceSelector:
matchLabels:
name: respectports:
– protocol: TCP
port: 5678!apply,下一题
6、SVC暴露应用,注意切换环境【中英文对照】——7%
!kubectl edit 编辑关键字:
ports:
name: http
protocol: TCPcontainerPort: 80
!kubectl expose deployment [fron-end] –port=80 –target-port=80 –type=NodePort –name=[front-end-svc]
!get svc进行检查
7、ingress,注意切换环境【中英文对照】——7%
!检查ns的情况
!官网导文档,这里仔细看题目的要求,编辑指定要求
!apply 后等几分钟,看到ingress的ip出来后curl测试
!下一题
8、scale,扩容,注意切换环境【中英文对照】——4%
!检查deployment情况,kubectl get deployment
!kubectl scale deployment [dep-name] –replicas=[5]
!get检查
9、nodeselector,注意切换环境【中英文对照】——4%
!检查ns,导文档复制拉下来,修改为指定文档
!apply,检查kubectl get pod -o wide
!下一题
10、统计就绪节点,注意切换环境【中英文对照】——4%
!kubectl get node
!kubectl describe node |grep Taint
——第二种确认方法——kubectl describe node | grep -i taints |grep -v -i noschedule
!echo “2” >> /xxx/xxx
11、配置多容器,注意切换环境【中英文对照】——4%
!kubectl run [name-pod] –image=nginx -o yaml –dry-run=client > podyaml.yaml,编辑多container。
!apply ,get检查下一题
12、配置pv,注意切换环境【中英文对照】——4%
!官网导入yaml,编辑指定要求
!apply,get pv 检查下一题
13、pod使用pvc,注意切换环境【中英文对照】——7%
!检查ns
!官网导入yaml,编辑指定要去
!apply后,kubectl edit pvc [pv-name] –save-config
!get pod 检查pod运行情况,
!这里记得get pvc 是否正常,且被扩展到70Mi,若一直有问题可以考虑删除强制重建[其他地方的解法,认为有两处要修改]
!没问题下一题
14、获取错误日志,注意切换环境【中英文对照】————5%
!kubectl logs [pod-name] | grep file-not-file > /opt/xxx/xxx
!cat检查,下一题
15、sidecar,注意切换环境【中英文对照】————7%
!注意先kubectl get pod [pod-name] -o yaml > appyaml.yaml,进去检查环境情况
!官网导出文档,编辑好并对应环境要求(注意日志、容器名字)
!kubectl get pod,然后删除pod
!执行apply -f 新yaml
!执行kubectl logs [pod-name] -c sidecar 确认日志回显
16、统计CPU,注意切换环境【中英文对照】——————5%
!get 检查pod
!kubectl top pod -l [label-name=label-name] –sort-by=’cpu’
!echo “<pod-name>” > /xxx/xxx
!cat 检查文件,下一题
17、恢复服务状态,注意切换环境【中英文对照】——————13%
!先get 看node,确认题目要求对应异常node——注意环境(最后要回到这里检查状态)
!ssh 异常node
!sudo -i
!systemctl status kubelet
!systemctl is-active kubelet
!systemctl start kubelet
!systemctl enable kubelet
!回到初始角色状态,(两次exit)
!get node状态,等待恢复ready后,全部重新检查一次
-
-
作者帖子
哎呀,回复话题必需登录。 Login here