2023 K8s 认证工程师 CKA 考题分析和题库练习(下)

2023-11-01

目录

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。

做题解答

# 考试时执行,切换集群。模拟环境中不需要执行
[student@node-1] $ kubectl config use-context k8s

# 模拟环境中创建题目指定的目录,考试时不需要,已存在
root@cka-master1:~# mkdir -pv /opt/KUSCO0402

# 开始解题:
# 查看集群中状态为 Ready 的节点
root@cka-master1:~# kubectl get nodes | grep -w "Ready"
cka-master1   Ready    control-plane,master   26h   v1.23.1
cka-node1     Ready    <none>                 26h   v1.23.1

# 统计 Ready 数量
root@cka-master1:~# kubectl get nodes | grep -w "Ready" | wc -l
2

# 统计具有污点 NoSchedule 的数量
root@cka-master1:~# kubectl describe nodes cka-master1 cka-node1 | grep "Taint" | grep "NoSchedule" | wc -l
1

# 把结果(2-1=1)写入题目中指定的文件
root@cka-master1:~# echo "1" > /opt/KUSCO0402/kusc00402.txt
root@cka-master1:~# cat /opt/KUSCO0402/kusc00402.txt 
1

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

题目内容

题目内容中文解释  

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

Task

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

官方文档搜索关键字:pod

使用 Pod:Pod | Kubernetes

做题解答

# 考试时执行,切换集群。模拟环境中不需要执行
[student@node-1] $ kubectl config use-context k8s

# 编写 yaml 文件
root@cka-master1:~# vim kucc1.yaml
apiVersion: v1
kind: Pod
metadata:
  name: kucc1
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  - name: redis
    image: redis
    imagePullPolicy: IfNotPresent
  - name: memcached
    image: memcached
    imagePullPolicy: IfNotPresent
  - name: consul
    image: consul
    imagePullPolicy: IfNotPresent

root@cka-master1:~# kubectl apply -f kucc1.yaml 

root@cka-master1:~# kubectl get pods kucc1
NAME    READY   STATUS    RESTARTS   AGE
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

做题解答

# 考试时执行,切换集群。模拟环境中不需要执行
[student@node-1] $ kubectl config use-context hk8s

# 创建题目中的目录,考试是不需要,已存在
root@cka-master1:~# mkdir -pv /srv/app-config

# 开始解题:
# 创建 pv
root@cka-master1:~# vim pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: app-config            # 题目中指定的 pv 名称
spec:
  capacity:
    storage: 2Gi              # 题目指定的 pv 大小  
  accessModes:
    - ReadWriteMany           # 题目指定的访问模式
  hostPath:
    path: "/srv/app-config"   # 题目指定的 url 

root@cka-master1:~# kubectl apply -f pv.yaml 
persistentvolume/app-config created

root@cka-master1:~# kubectl get pv
NAME         CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
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

做题解答 

# 考试时执行,切换集群。模拟环境中不需要执行
[student@node-1] $ kubectl config use-context ok8s

# 创建 pvc 和 pod
root@cka-master1:~# vim pvc-pod.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-volume                    # 题目指定的 pvc 名称
spec:
  storageClassName: csi-hostpath-sc  # 题目指定的存储类名称
  accessModes:
    - ReadWriteOnce                  # 题目指定的访问模式
  resources:
    requests:
      storage: 10Mi                  # 题目指定的 pvc 大小  
---
apiVersion: v1
kind: Pod
metadata:
  name: web-server                   # 题目指定的 pod 名称 
spec:
  volumes:
    - name: pv-volume                # 与 volumeMounts.name 一致
      persistentVolumeClaim:
        claimName: pv-volume         # 使用的 pvc 名称
  containers:
    - name: nginx
      image: nginx                   # 题目指定的镜像 
      volumeMounts:
        - mountPath: "/usr/share/nginx/html" # 题目指定的挂载目录
          name: pv-volume            

root@cka-master1:~# kubectl apply -f pvc-pod.yaml 

# 查看是否创建成功。之所以是 pending 状态是模拟环境中没有存储类 storageClassName: csi-hostpath-sc,考试环境中存在,无需担心
root@cka-master1:~# kubectl get pvc pv-volume 
NAME        STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS      AGE
pv-volume   Pending                                      csi-hostpath-sc   21s
root@cka-master1:~# kubectl get pods web-server 
NAME         READY   STATUS    RESTARTS   AGE
web-server   0/1     Pending   0          31s

# pvc 扩容。将 storage: 10Mi 修改为 70Mi
root@cka-master1:~# kubectl edit pvc pv-volume
······
  resources:
    requests:
      storage: 70Mi
  storageClassName: csi-hostpath-sc
······

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

题目内容

题目内容中文解释  

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

Task

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

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

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

做题解答

# 考试时执行,切换集群。模拟环境中不需要执行
[student@node-1] $ kubectl config use-context k8s

[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

做题解答

# 考试时执行,切换集群。模拟环境中不需要执行
[student@node-1] $ kubectl config use-context k8s

# 在模拟环境中创建题目中提到的 pod legacy-app,考试不需要,已存在
root@cka-master1:~# vim legacy-app.yaml
apiVersion: v1
kind: Pod
metadata:
  name: legacy-app
spec:
  containers:
  - name: count
    image: busybox
    args:
    - /bin/sh
    - -c
    - >
      i=0;
      while true;
      do
        echo "$(date) INFO $i" >> /var/log/legacy-app.log;
        i=$((i+1));
        sleep 1;
      done    

root@cka-master1:~# kubectl apply -f legacy-app.yaml 
root@cka-master1:~# kubectl get pods legacy-app 
NAME         READY   STATUS    RESTARTS   AGE
legacy-app   1/1     Running   0          17s

# 开始解题:
# 首先将题目中现有的 pod legacy-app 的 yaml 导出
root@cka-master1:~# kubectl get pods legacy-app -o yaml > sidecar.yaml

# 删除一些导出的内容,结果如下
root@cka-master1:~# vim sidecar.yaml
apiVersion: v1
kind: Pod
metadata:
  name: legacy-app
  namespace: default
spec:
  containers:
  - args:
    - /bin/sh
    - -c
    - "i=0; while true; do\n  echo \"$(date) INFO $i\" >> /var/log/legacy-app.log;\n
      \ i=$((i+1));\n  sleep 1;\ndone      \n"
    image: busybox
    imagePullPolicy: Always
    name: count

# 在 sidecar.yaml 中添加 sidecar 容器和 volume
root@cka-master1:~# vim sidecar.yaml
apiVersion: v1
kind: Pod
metadata:
  name: legacy-app
  namespace: default
spec:
  containers:
  - args:
    - /bin/sh
    - -c
    - "i=0; while true; do\n  echo \"$(date) INFO $i\" >> /var/log/legacy-app.log;\n
      \ i=$((i+1));\n  sleep 1;\ndone      \n"
    image: busybox
    imagePullPolicy: IfNotPresent
    name: count
    volumeMounts:
    - name: logs
      mountPath: /var/log
  - name: sidecar
    image: busybox
    imagePullPolicy: IfNotPresent
    args: [/bin/sh, -c, 'tail -n+1 -f /var/log/legacy-app.log']
    volumeMounts:
    - name: logs
      mountPath: /var/log
  volumes:
  - name: logs
    emptyDir: {}  

# 先删除原有的 pod 才能更新
root@cka-master1:~# kubectl delete -f sidecar.yaml 

# 如果删除很慢的话,就强制删除
root@cka-master1:~# kubectl delete -f sidecar.yaml --force --grace-period=0

root@cka-master1:~# kubectl apply -f sidecar.yaml 
pod/legacy-app created
root@cka-master1:~# kubectl get pods legacy-app 
NAME         READY   STATUS    RESTARTS   AGE
legacy-app   2/2     Running   0          3s

# 查看 sidecar 容器日志
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、内存、存储)的使用情况:

做题解答

# 考试时执行,切换集群。模拟环境中不需要执行
[student@node-1] $ kubectl config use-context k8s

# 将 addon.tar.gz、metrics-server-amd64-0-3-6.tar.gz 上传到 node 并解压
root@cka-node1:~# docker load -i addon.tar.gz

root@cka-node1:~# docker load -i metrics-server-amd64-0-3-6.tar.gz

# 将 metrics.yaml 上传到 master 并创建
root@cka-master1:~# kubectl apply -f metrics.yaml 

# 给 pod 打上标签
root@cka-master1:~# kubectl label pods -n kube-system metrics-server-875fcb674-snp99 name=cpu-user

# 创建题目给的目录
root@cka-master1:~# mkdir -pv /opt/KUTR00401

# 以上步骤在模拟环境中创建,模拟题目给出的环境,考试时不需要,已存在
# 开始解题:
# 查看标签为 name=cpu-user 并且是 cpu 使用最高的 pod
root@cka-master1:~# kubectl top pods -l name=cpu-user --sort-by=cpu -A
NAMESPACE     NAME                             CPU(cores)   MEMORY(bytes)   
kube-system   metrics-server-875fcb674-snp99   2m           17Mi

# 将查到的 pod 名字写入 /opt/KUTR00401/KUTR00401.txt 文件中
root@cka-master1:~# echo "metrics-server-875fcb674-snp99" > /opt/KUTR00401/KUTR00401.txt
root@cka-master1:~# cat /opt/KUTR00401/KUTR00401.txt 
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

做题解答

# 考试时执行,切换集群。模拟环境中不需要执行
[student@node-1] $ kubectl config use-context wk8s

# 开始解题:
[student@node-1] $ ssh wk8s-node-0
[student@node-1] $ sudo -i

[root@wk8s-node-0 ~]# systemctl status kubelet
[root@wk8s-node-0 ~]# systemctl restart kubelet
[root@wk8s-node-0 ~]# systemctl enable kubelet
[root@wk8s-node-0 ~]# systemctl status kubelet

# 退出 root,退回到 student@wk8s-node-0
[root@wk8s-node-0 ~]# exit

# 退出 wk8s-node-0,退回到 student@node-1
[student@wk8s-node-0 ~]# exit

# 不要输入 exit 太多,否则会退出考试环境

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

下一篇文章:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2023 K8s 认证工程师 CKA 考题分析和题库练习(下) 的相关文章

随机推荐

  • 浅谈C++的sort函数用法

    目录 sort简介 一 默认排序 二 参数排序 三 自定义排序规则 四 排序字符数组 sort简介 头文件为algorithm 其排序方式类似于快速排序 比冒泡选择之类的小杂鱼高级 函数调用形式为 sort 参数a 参数b 参数c 参数a是
  • 华为OD机试真题-二元组个数【2023.Q1】

    题目描述 给定两个数组a b 若a i b j 则称 i j 为一个二元组 求在给定的两个数组中 二元组的个数 输入描述 第一行输入 m 第二行输入m个数 表示第一个数组 第三行输入 n 第四行输入n个数 表示第二个数组 输出描述 二元组个
  • Python利用情感词典做情感分析

    情感分析是大数据时代常见的一种分析方法 多用于对产品评论的情感挖掘 以探究顾客的满意度程度 在做情感分析时 有两种途径 一种是基于情感词典的分析方法 一种是基于机器学习的方法 两者各有利弊 在此 笔者主要想跟大家分享基于python平台利用
  • 区块链发展面临三大挑战

    区块链技术最近几年在世界范围一直是个热门话题 这种 热 源自于区块链的确是有很多优势的技术 它呈现出美好的前景 但同时也因为区块链发展会带来非常大的挑战 而且这种挑战可以说是历史性的 那么区块链会带来哪些挑战呢 我觉得主要有以下三个方面 第
  • 基于Qt的OpenGL编程(3.x以上GLSL可编程管线版)---(十六)实例化

    Vries的原教程地址如下 https learnopengl cn github io 04 20Advanced 20OpenGL 10 20Instancing 关于实例化的详细设置介绍与设置与参数设置请查看这个教程 本篇旨在对Vir
  • C++的嵌套依赖别名(typename的用法)

    看了很多遍 还是记录一下 1 在模板声明时typename和class是等价的 template
  • PyTorch训练时准确率不变

    今天复现了文章中的一个模型 刚开始学习率lr 0 01 准确率总是为20 分类目标有5个类 基本不变 刚开始我以为给模型的数据传错了 或者模型的处理有那个步骤有问题 最终多次尝试后 发现把学习率降低 结果就有效了 如我把学习率降低为lr 0
  • 我所钟爱的电影之二-公路片

    我爱公路片 人生只不过一次流浪 命运之途中 沿途风景或许都会遗忘 咫尺和遥远或许就在一瞬间 逝去的我们会怀念 一辈子就是活着的每一天 也许我不能环游世界 但幸好这个世界上有电影可以带我去 不管出走的初衷为何 在途中我们都会遇见爱 只因我们在
  • Selenium六 find_element_by_xpath()的几种方法

    Xpath XML Path Language 是W3C定义的用来在XML文档中选择节点的语言 一 从根目录 开始 有点像Linux的文件查看 代表根目录 一级一级的查找 直接子节点 相当于css selector中的 gt 号 html
  • SpringCloudAlibaba - Seata (2) AT 模式源码分析

    seata AT 模式的业务零侵入性 依靠的就是自动装配 starter 包 1 如何开启的全局事务 实现核心为 SeataAutoConfiguration 注入的 GlobalTransactionScanner Conditional
  • Qt 开发应用--颜色选择器ColorCopy

    Qt 开发应用 颜色选择器ColorCopy Qt颜色选择器 提供10大类100种颜色可选 点击即为复制 随处 Ctrl V 粘贴使用 提供有 Red Pink Purple Indigo Blue Green Yellow Orange
  • 进程和线程以及协程

    1 基本概念 进程和线程 进程 是系统资源分配的基本单位 实现了操作系统的并发 线程 是CPU调度的基本单位 实现了进程内的并发执行 并发是把任务在不同的时间点交给处理器进行处理 在同一时间点 任务并不会同时运行 并行是把每一个任务分配给每
  • 个人经济学管理tips

    摘录一些观点 作为茶余饭后的谈资 不清楚自己的热爱和目标时 每天把头脑最清醒的1小时留给自己 学习 思考 3个小时陪伴家人 剩下的时间 谁给钱多就给谁干 一居室好过养老年金险 房产保值升值 租金跑得赢通胀 一套刚需 一套改善 一套投资 三套
  • Win10系统下编译FFmpeg

    1 使用git下载源码 git clone git source ffmpeg org ffmpeg git ffmpeg 2 FFmpeg在windows平台编译需要使用MinGW w64来编译 单独使用MinGW w64比较麻烦 推荐使
  • pip镜像安装 python 安装库

    pip install openpyxl i https mirrors aliyun com pypi simple pip 本身更新 pip install upgrade pip vvv 上面是阿里云的 我用了特别快 语法 安装pip
  • 专利情况的基本了解

    专利 目标专利的拆解 提前关键词 构建检索式 适当的进行补充检 拆解已有技术的技术特征 申请书 说明书 权利要求 摘要 附图 优先权请求 发明 实用新型和外观设计 发明专利 实用新型专利和外观设计专利 发明专利 针对产品 方法或者产品 方法
  • c语言中两个有序数组合并,C语言算法:有序数组合并-2020-08-21

    方法 就是同时遍历两个数组 通过比大小 组成一个新数组 数组参数最好带上一个长度参数 防止越界 代码 合并数组 其中a b都是从小到大有序排列的数组 void mergeList int a int aLen int b int bLen
  • 高德地图api 地理编码(地址-->坐标)geocoder.getLocation在官方可以测试出结果,下载代码到本地却用不了 问题解决

    问题 高德地图api 地理编码 地址 gt 坐标 功能 通过输入 地址信息 得到 经纬度信息 geocoder getLocation在官方可以测试出结果 下载代码到本地却用不了 官方示例测试 可以从地址得到坐标 下载官方代码本地运行却出不
  • 最全的雅思8000词汇pdf_雅思听力场景分类词汇汇总,听力提分先搞定它!

    很多烤鸭来和哥聊天 聊听力的时候 大部分都会出现以下对话内容 为了让大家更加身临其境 我就做的趣味性点了哈 一 定 要 看 完 对 大家都是拿完资料就溜 一有问题就找哥谈心 不夸哥就算了 还不拿赞出来给哥 哼 抱住坚强的自己 擦干眼泪给你们
  • 2023 K8s 认证工程师 CKA 考题分析和题库练习(下)

    目录 10 考核知识 检查可用节点数量 题目内容 题目内容中文解释 做题解答 11 考核知识 一个 Pod 封装多个容器 题目内容 题目内容中文解释 官方文档搜索关键字 pod 编辑做题解答 12 考核知识 持久卷 PersistentVo