当前位置:   article > 正文

2023 K8s 认证工程师 CKA 考题分析和题库练习(下)_k8s node1节点突然不见了2023 k8s 认证工程师 cka 考题分析和题库练习(下)_st

k8s node1节点突然不见了2023 k8s 认证工程师 cka 考题分析和题库练习(下)_stars.

目录

10、考核知识:检查可用节点数量

题目内容

题目内容中文解释

做题解答

11、考核知识:一个 Pod 封装多个容器

题目内容

题目内容中文解释  

官方文档搜索关键字:pod

​编辑做题解答

12、考核知识:持久卷 PersistentVolume

题目内容

题目内容中文解释  

官方文档搜索关键字:pv

做题解答

13、考核知识:PersistentVolumeClaims

题目内容

题目内容中文解释  

官方文档搜索关键字:pvc

做题解答 

14、考核知识:查看 Pod 日志

题目内容

题目内容中文解释  

官方文档搜索关键字:kubectl logs

做题解答

15、考核知识:Sidecar 代理

题目内容

题目内容中文解释  

官方文档搜索关键字:logging

做题解答

16、考核知识:查看 Pod 的 cpu

题目内容

题目内容中文解释  

官方文档搜索关键字:kubectl top pod

做题解答

17、考核知识:集群故障排查 - kubelet 故障

题目内容

题目内容中文解释  

做题解答


  • CKA 证书展示:

提示:

我的 cak 模拟环境:

10、考核知识:检查可用节点数量

题目内容

题目内容中文解释

切换 k8s 集群环境:kubectl config use-context k8s

Task

        检查集群中有多少节点为 Ready 状态(不包括被打上 Taint: NoSchedule 的节点),之后将数量写到 /opt/KUSCO0402/kusc00402.txt。

做题解答

  1. # 考试时执行,切换集群。模拟环境中不需要执行
  2. [student@node-1] $ kubectl config use-context k8s
  3. # 模拟环境中创建题目指定的目录,考试时不需要,已存在
  4. root@cka-master1:~# mkdir -pv /opt/KUSCO0402
  5. # 开始解题:
  6. # 查看集群中状态为 Ready 的节点
  7. root@cka-master1:~# kubectl get nodes | grep -w "Ready"
  8. cka-master1 Ready control-plane,master 26h v1.23.1
  9. cka-node1 Ready <none> 26h v1.23.1
  10. # 统计 Ready 数量
  11. root@cka-master1:~# kubectl get nodes | grep -w "Ready" | wc -l
  12. 2
  13. # 统计具有污点 NoSchedule 的数量
  14. root@cka-master1:~# kubectl describe nodes cka-master1 cka-node1 | grep "Taint" | grep "NoSchedule" | wc -l
  15. 1
  16. # 把结果(2-1=1)写入题目中指定的文件
  17. root@cka-master1:~# echo "1" > /opt/KUSCO0402/kusc00402.txt
  18. root@cka-master1:~# cat /opt/KUSCO0402/kusc00402.txt
  19. 1

11、考核知识:一个 Pod 封装多个容器

题目内容

题目内容中文解释  

切换 k8s 集群环境:kubectl config use-context k8s

Task

        创建一个 Pod,名字为 kucc1,这个 Pod 包含 4 个容器,为 nginx、redis、memcached、consul。

官方文档搜索关键字:pod

使用 Pod:Pod | Kubernetes

做题解答

  1. # 考试时执行,切换集群。模拟环境中不需要执行
  2. [student@node-1] $ kubectl config use-context k8s
  3. # 编写 yaml 文件
  4. root@cka-master1:~# vim kucc1.yaml
  5. apiVersion: v1
  6. kind: Pod
  7. metadata:
  8. name: kucc1
  9. spec:
  10. containers:
  11. - name: nginx
  12. image: nginx
  13. imagePullPolicy: IfNotPresent
  14. - name: redis
  15. image: redis
  16. imagePullPolicy: IfNotPresent
  17. - name: memcached
  18. image: memcached
  19. imagePullPolicy: IfNotPresent
  20. - name: consul
  21. image: consul
  22. imagePullPolicy: IfNotPresent
  23. root@cka-master1:~# kubectl apply -f kucc1.yaml
  24. root@cka-master1:~# kubectl get pods kucc1
  25. NAME READY STATUS RESTARTS AGE
  26. kucc1 4/4 Running 0 3s

12、考核知识:持久卷 PersistentVolume

题目内容

题目内容中文解释  

切换 k8s 集群环境:kubectl config use-context hk8s

Task

        创建一个 pv,名字为 app-config,大小为 2Gi, 访问权限为 ReadWriteMany。Volume 的类型为 hostPath,路径为 /srv/app-config。

官方文档搜索关键字:pv

创建 PersistentVolume:配置 Pod 以使用 PersistentVolume 作为存储 | Kubernetes

做题解答

  1. # 考试时执行,切换集群。模拟环境中不需要执行
  2. [student@node-1] $ kubectl config use-context hk8s
  3. # 创建题目中的目录,考试是不需要,已存在
  4. root@cka-master1:~# mkdir -pv /srv/app-config
  5. # 开始解题:
  6. # 创建 pv
  7. root@cka-master1:~# vim pv.yaml
  8. apiVersion: v1
  9. kind: PersistentVolume
  10. metadata:
  11. name: app-config # 题目中指定的 pv 名称
  12. spec:
  13. capacity:
  14. storage: 2Gi # 题目指定的 pv 大小
  15. accessModes:
  16. - ReadWriteMany # 题目指定的访问模式
  17. hostPath:
  18. path: "/srv/app-config" # 题目指定的 url
  19. root@cka-master1:~# kubectl apply -f pv.yaml
  20. persistentvolume/app-config created
  21. root@cka-master1:~# kubectl get pv
  22. NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
  23. app-config 2Gi RWX Retain Available 6s

13、考核知识:PersistentVolumeClaims

题目内容

题目内容中文解释  

切换 k8s 集群环境:kubectl config use-context ok8s

Task

        创建一个名字为 pv-volume 的 pvc,指定 storageClass 为 csi-hostpath-sc,大小为 10Mi。然后创建一个 Pod,名字为 web-server,镜像为 nginx,并且挂载该 PVC 至 /usr/share/nginx/html,挂载的权限为 RedWriteOnce。之后通过 kubectl edit 或者 kubectl path 将 pvc 改成 70Mi,并且记录修改记录。

官方文档搜索关键字:pvc

创建 PersistentVolumeClaim:配置 Pod 以使用 PersistentVolume 作为存储 | Kubernetes

做题解答 

  1. # 考试时执行,切换集群。模拟环境中不需要执行
  2. [student@node-1] $ kubectl config use-context ok8s
  3. # 创建 pvc 和 pod
  4. root@cka-master1:~# vim pvc-pod.yaml
  5. apiVersion: v1
  6. kind: PersistentVolumeClaim
  7. metadata:
  8. name: pv-volume # 题目指定的 pvc 名称
  9. spec:
  10. storageClassName: csi-hostpath-sc # 题目指定的存储类名称
  11. accessModes:
  12. - ReadWriteOnce # 题目指定的访问模式
  13. resources:
  14. requests:
  15. storage: 10Mi # 题目指定的 pvc 大小
  16. ---
  17. apiVersion: v1
  18. kind: Pod
  19. metadata:
  20. name: web-server # 题目指定的 pod 名称
  21. spec:
  22. volumes:
  23. - name: pv-volume # 与 volumeMounts.name 一致
  24. persistentVolumeClaim:
  25. claimName: pv-volume # 使用的 pvc 名称
  26. containers:
  27. - name: nginx
  28. image: nginx # 题目指定的镜像
  29. volumeMounts:
  30. - mountPath: "/usr/share/nginx/html" # 题目指定的挂载目录
  31. name: pv-volume
  32. root@cka-master1:~# kubectl apply -f pvc-pod.yaml
  33. # 查看是否创建成功。之所以是 pending 状态是模拟环境中没有存储类 storageClassName: csi-hostpath-sc,考试环境中存在,无需担心
  34. root@cka-master1:~# kubectl get pvc pv-volume
  35. NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
  36. pv-volume Pending csi-hostpath-sc 21s
  37. root@cka-master1:~# kubectl get pods web-server
  38. NAME READY STATUS RESTARTS AGE
  39. web-server 0/1 Pending 0 31s
  40. # pvc 扩容。将 storage: 10Mi 修改为 70Mi
  41. root@cka-master1:~# kubectl edit pvc pv-volume
  42. ······
  43. resources:
  44. requests:
  45. storage: 70Mi
  46. storageClassName: csi-hostpath-sc
  47. ······

14、考核知识:查看 Pod 日志

题目内容

题目内容中文解释  

切换 k8s 集群环境:kubectl config use-context k8s

Task

        监控名为 foobar 的 Pod 的日志,并过滤出具有 unable-access-website 信息的行,然后将写入到 /opt/KUTR00101/foobar。

官方文档搜索关键字:kubectl logs

示例:常用操作:命令行工具 (kubectl) | Kubernetes

做题解答

  1. # 考试时执行,切换集群。模拟环境中不需要执行
  2. [student@node-1] $ kubectl config use-context k8s
  3. [student@node-1] $ kubectl logs foobar | grep unable-access-website > /opt/KUTR00101/foobar

15、考核知识:Sidecar 代理

题目内容

题目内容中文解释  

Context

        将一个现有的 Pod 集成到 Kubernetes 的内置日志记录体系结构中 (例如 kubectl logs)。添加 streaming sidecar 容器是实现此要求的一种好方法。

Task

        使用 busybox lmage 来将名为 sidecar 的 sidecar 容器添加到现有的 Pod legacy-app 上,新的 sidecar 容器必须运行以下命令:
/bin/sh -c tail -n+1 -f /var/log/legacy-app.log

使用 volume 挂载 /var/log/ 目录,确保 sidecar 能访问 /var/log/legacy-app.log 文件。

官方文档搜索关键字:logging

使用边车容器运行日志代理:日志架构 | Kubernetes

做题解答

  1. # 考试时执行,切换集群。模拟环境中不需要执行
  2. [student@node-1] $ kubectl config use-context k8s
  3. # 在模拟环境中创建题目中提到的 pod legacy-app,考试不需要,已存在
  4. root@cka-master1:~# vim legacy-app.yaml
  5. apiVersion: v1
  6. kind: Pod
  7. metadata:
  8. name: legacy-app
  9. spec:
  10. containers:
  11. - name: count
  12. image: busybox
  13. args:
  14. - /bin/sh
  15. - -c
  16. - >
  17. i=0;
  18. while true;
  19. do
  20. echo "$(date) INFO $i" >> /var/log/legacy-app.log;
  21. i=$((i+1));
  22. sleep 1;
  23. done
  24. root@cka-master1:~# kubectl apply -f legacy-app.yaml
  25. root@cka-master1:~# kubectl get pods legacy-app
  26. NAME READY STATUS RESTARTS AGE
  27. legacy-app 1/1 Running 0 17s
  28. # 开始解题:
  29. # 首先将题目中现有的 pod legacy-app 的 yaml 导出
  30. root@cka-master1:~# kubectl get pods legacy-app -o yaml > sidecar.yaml
  31. # 删除一些导出的内容,结果如下
  32. root@cka-master1:~# vim sidecar.yaml
  33. apiVersion: v1
  34. kind: Pod
  35. metadata:
  36. name: legacy-app
  37. namespace: default
  38. spec:
  39. containers:
  40. - args:
  41. - /bin/sh
  42. - -c
  43. - "i=0; while true; do\n echo \"$(date) INFO $i\" >> /var/log/legacy-app.log;\n
  44. \ i=$((i+1));\n sleep 1;\ndone \n"
  45. image: busybox
  46. imagePullPolicy: Always
  47. name: count
  48. # 在 sidecar.yaml 中添加 sidecar 容器和 volume
  49. root@cka-master1:~# vim sidecar.yaml
  50. apiVersion: v1
  51. kind: Pod
  52. metadata:
  53. name: legacy-app
  54. namespace: default
  55. spec:
  56. containers:
  57. - args:
  58. - /bin/sh
  59. - -c
  60. - "i=0; while true; do\n echo \"$(date) INFO $i\" >> /var/log/legacy-app.log;\n
  61. \ i=$((i+1));\n sleep 1;\ndone \n"
  62. image: busybox
  63. imagePullPolicy: IfNotPresent
  64. name: count
  65. volumeMounts:
  66. - name: logs
  67. mountPath: /var/log
  68. - name: sidecar
  69. image: busybox
  70. imagePullPolicy: IfNotPresent
  71. args: [/bin/sh, -c, 'tail -n+1 -f /var/log/legacy-app.log']
  72. volumeMounts:
  73. - name: logs
  74. mountPath: /var/log
  75. volumes:
  76. - name: logs
  77. emptyDir: {}
  78. # 先删除原有的 pod 才能更新
  79. root@cka-master1:~# kubectl delete -f sidecar.yaml
  80. # 如果删除很慢的话,就强制删除
  81. root@cka-master1:~# kubectl delete -f sidecar.yaml --force --grace-period=0
  82. root@cka-master1:~# kubectl apply -f sidecar.yaml
  83. pod/legacy-app created
  84. root@cka-master1:~# kubectl get pods legacy-app
  85. NAME READY STATUS RESTARTS AGE
  86. legacy-app 2/2 Running 0 3s
  87. # 查看 sidecar 容器日志
  88. root@cka-master1:~# kubectl logs legacy-app -c sidecar

16、考核知识:查看 Pod 的 cpu

题目内容

题目内容中文解释  

切换 k8s 集群环境:kubectl config use-context k8s

Task

        找出标签是 name=cpu-user 的 Pod,并过滤出使用 CPU 最高的 Pod,然后把它的名字写在已经存在的 /opt/KUTR00401/KUTR00401.txt 文件里(注意他没有说指定 namespace,所以需要使用 -A 指定所有 namespace)。

官方文档搜索关键字:kubectl top pod

指定内存请求和限制:为容器和 Pod 分配内存资源 | Kubernetes

显示资源(CPU、内存、存储)的使用情况:

做题解答

  1. # 考试时执行,切换集群。模拟环境中不需要执行
  2. [student@node-1] $ kubectl config use-context k8s
  3. # 将 addon.tar.gz、metrics-server-amd64-0-3-6.tar.gz 上传到 node 并解压
  4. root@cka-node1:~# docker load -i addon.tar.gz
  5. root@cka-node1:~# docker load -i metrics-server-amd64-0-3-6.tar.gz
  6. # 将 metrics.yaml 上传到 master 并创建
  7. root@cka-master1:~# kubectl apply -f metrics.yaml
  8. # 给 pod 打上标签
  9. root@cka-master1:~# kubectl label pods -n kube-system metrics-server-875fcb674-snp99 name=cpu-user
  10. # 创建题目给的目录
  11. root@cka-master1:~# mkdir -pv /opt/KUTR00401
  12. # 以上步骤在模拟环境中创建,模拟题目给出的环境,考试时不需要,已存在
  13. # 开始解题:
  14. # 查看标签为 name=cpu-user 并且是 cpu 使用最高的 pod
  15. root@cka-master1:~# kubectl top pods -l name=cpu-user --sort-by=cpu -A
  16. NAMESPACE NAME CPU(cores) MEMORY(bytes)
  17. kube-system metrics-server-875fcb674-snp99 2m 17Mi
  18. # 将查到的 pod 名字写入 /opt/KUTR00401/KUTR00401.txt 文件中
  19. root@cka-master1:~# echo "metrics-server-875fcb674-snp99" > /opt/KUTR00401/KUTR00401.txt
  20. root@cka-master1:~# cat /opt/KUTR00401/KUTR00401.txt
  21. metrics-server-875fcb674-snp99

17、考核知识:集群故障排查 - kubelet 故障

题目内容

题目内容中文解释  

切换 k8s 集群环境:kubectl config use-context wk8s

Task

        一个名为 wk8s-node-0 的节点状态为 NotReady,让其他恢复至正常状态,并确认所有的更改开机自动完成。

可以使用以下命令,通过 ssh 连接到 wk8s-node-0 节点:ssh wk8s-node-0

可以使用以下命令,在该节点上获取更高权限:sudo -i

做题解答

  1. # 考试时执行,切换集群。模拟环境中不需要执行
  2. [student@node-1] $ kubectl config use-context wk8s
  3. # 开始解题:
  4. [student@node-1] $ ssh wk8s-node-0
  5. [student@node-1] $ sudo -i
  6. [root@wk8s-node-0 ~]# systemctl status kubelet
  7. [root@wk8s-node-0 ~]# systemctl restart kubelet
  8. [root@wk8s-node-0 ~]# systemctl enable kubelet
  9. [root@wk8s-node-0 ~]# systemctl status kubelet
  10. # 退出 root,退回到 student@wk8s-node-0
  11. [root@wk8s-node-0 ~]# exit
  12. # 退出 wk8s-node-0,退回到 student@node-1
  13. [student@wk8s-node-0 ~]# exit
  14. # 不要输入 exit 太多,否则会退出考试环境

上一篇文章:2023 K8s 认证工程师 CKA 考题分析和题库练习(上)_Stars.Sky的博客-CSDN博客

下一篇文章:

【Kubernetes 企业项目实战】02、基于 Prometheus 和 K8s 构建智能化监控告警系统(上)_Stars.Sky的博客-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/171428
推荐阅读
相关标签
  

闽ICP备14008679号