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

news2024/11/15 9:32:10

目录

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

题目内容

题目内容中文解释

做题解答

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

题目内容

题目内容中文解释  

官方文档搜索关键字:pod

​编辑做题解答

12、考核知识:持久卷 PersistentVolume

题目内容

题目内容中文解释  

官方文档搜索关键字:pv

做题解答

13、考核知识:PersistentVolumeClaims

题目内容

题目内容中文解释  

官方文档搜索关键字:pvc

做题解答 

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

题目内容

题目内容中文解释  

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

做题解答

15、考核知识:Sidecar 代理

题目内容

题目内容中文解释  

官方文档搜索关键字:logging

做题解答

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

题目内容

题目内容中文解释  

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

做题解答

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

题目内容

题目内容中文解释  

做题解答


提示:

  • 在模拟环境中练习时最好是每做一道题就打一个快照,做完之后再恢复!(一共 17 道题)
  • 考试环境的系统是 Ubuntu
  • 文件资料下载:https://download.csdn.net/download/weixin_46560589/87364476

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
      persistentVolumeClaim:
        claimName: pv-volume         # 使用的 pvc 名称
  containers:
    - name: nginx
      image: nginx                   # 题目指定的镜像 
      volumeMounts:
        - mountPath: "/usr/share/nginx/html" # 题目指定的挂载目录
          name: pv-volume            # 使用的 pvc 名称

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 --record
······
  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、考核知识:集群故障排查 - kubectl 故障

题目内容

题目内容中文解释  

切换 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 enable kubelet --now
[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 太多,否则会退出考试环境

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/141601.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mac M1芯片 搭建RocketMQ

Mac M1芯片 搭建RocketMQ RocketMQ需要启动三个组件 1、nameserver 路由中心,为整个MQ集群提供服务协调与治理 2、broker 提供消息的转发和存储功能 3、console 控制台面板工具 1、下载RocketMQ https://rocketmq.apache.org/dowloading/releases/ 选择 Binary: rocketmq-all-4…

对外投资追踪汇率数据金融开放指数

一、2005-2020年中国全球投资追踪数据 “中国全球投资跟踪”&#xff08;China Global Investment Tracker&#xff09;数据库&#xff0c;由美国企业研究所于1月28日发布。该数据库是唯一一套涵盖中国全球投资和建设的综合数据集&#xff0c;同时使用分别记录和汇总记录两种方…

这几个算法可视化网站,太牛了!

本文已经收录到Github仓库&#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构等核心知识点&#xff0c;欢迎star~ Github地址&#xff1a;https://github.com/Tyson0314/Java-…

深入 Android 底层服务(service)

前言 我们都知道&#xff0c;字节最近发布了PICO&#xff14;VR眼镜&#xff0c;我买了一个&#xff0c;体验还行。因为我也是做VR眼镜的Android应用层开发的&#xff0c;所以想把自己项目中遇到的一些Android技术分享给读者。近些年随着VR眼镜的兴起&#xff0c;Android的的服…

项目经理跨部门沟通,如何避免踢皮球?

软件项目干系人越多&#xff0c;沟通成本也就越高&#xff0c;非常容易出现相互提皮球的现象。那么如何高效沟通&#xff1f; 1、划分干系人 不同干系人不同策略 软件项目涉及干系人众多&#xff0c;项目不经理不可能对每一个人进行详细沟通&#xff0c;那么我们需要将干系人的…

如何把优化Docker镜像大小

什么是Docker Docker是一个开源的虚拟化平台&#xff0c;可以让开发人员将应用程序和依赖项打包在轻量级容器中&#xff0c;然后可以轻松地在任何环境中运行。这样&#xff0c;开发人员可以将容器作为独立的可移植单元在不同的环境中部署和运行应用程序&#xff0c;而不用担心环…

系统学习ElasticSearch

1.1 、ElasticSearch&#xff08;简称ES&#xff09; Elasticsearch是用Java开发并且是当前最流行的开源的企业级搜索引擎。 能够达到实时搜索&#xff0c;稳定&#xff0c;可靠&#xff0c;快速&#xff0c;安装使用方便。 客户端支持Java、.NET&#xff08;C#&#xff09;、…

SAP FICO财务月结-外币评估

月末操作-外币评估 —文章整理自高林旭老师的《由浅入深学习SAP财务》一书&#xff0c;SAP相关从业人员值得一读。 企业的外币业务在记账的时候一般都是使用期初的汇率或者即时汇率&#xff0c;但是在月末&#xff0c;需要按照月末汇率对外币的余额或者未清项进行重估&#xf…

c语言入门-3-打印复杂类型

打印复杂类型前言上代码字符整形浮点型打印超长小数向内存中申请空间局部变量&#xff0c;全局变量使用输入函数 scanf作用域生命周期深度解析1 c语言中数据类型2 这些字段类型的大小又是多少呢3 计算机的大小单位4 scanf 报错下一篇前言 语言本身的学习&#xff0c;有两点比较…

【前端】Vue项目:旅游App-(7)city:搜索框search和标签页Tabs

文章目录目标过程与代码搜索框初步自己实现取消功能样式修改标签页效果总代码修改的文件common.csscity.vuemain.js目标 过程与代码 搜索框 初步 在Vant文档中找到搜索框&#xff1a;Search搜索 按照文档要求引入&#xff08;如果以插件的形式安装vant就不用这样引入&#x…

c语言 动态内存分配 柔性数组

常见的动态内存错误 对null指针的解引用操作 int main()//错误1 因为没有判断 {int* p (int*)malloc(10000);int i 0;for (i 0; i < 10; i){*(p i) i;}return 0; }对动态开辟空间的越界访问 int main() {int* p malloc(10 * sizeof(int));if (p NULL){return 1;}…

5G NR标准: 第16章 初始接入

第16章 初始接入 在 NR 中&#xff0c;初始接入功能包括&#xff1a; • 设备在进入系统覆盖区域时最初找到小区的功能和过程。 • 处于空闲/非活动状态的设备访问网络的功能和程序&#xff0c;通常是请求建立连接&#xff0c;通常称为随机访问。 在相当大的程度上&#xff0…

ORA-27102:out of memory Linux-x86_64 Error: 12: Cannot allocate memory

一 问题描述 无法启动数据库&#xff0c;报错&#xff1a; 二 排查思路 1.确保sga_target,sga_max_size比可用物理内存小 2.检查kernel.shmmax&#xff0c;kernel.shmall是否设置得太小 一般出现ORA-27102&#xff1a;out of memory&#xff0c;是/etc/sysctl.conf种内核参…

Apache Tomcat 存在 JsonErrorReportValve 注入漏洞(CVE-2022-45143)

漏洞描述 Apache Zeppelin是一款基于 Web 可实现交互式数据分析的notebook产品。 在Apache Zeppelin 0.10.1及以前的版本中“Move folder to Trash”功能存在路径遍历漏洞&#xff0c;由于未对InterpreterSettingManager类remove方法中id参数进行正确校验&#xff0c;攻击者可…

看完这篇文章,我再也不用担心线上出现 CPU 性能问题了(上)

目录CPU 使用率平均负载进程上下文切换总结生产环境上出现 CPU 性能问题是非常典型的一类问题&#xff0c;往往这个时候就比较考验相关人员排查问题的能力我相信不少小伙伴在工作当中多多少少都会碰到 CPU 出现性能瓶颈 不知道小伙伴们有没有跟我一样的感受——当 CPU 出现性能…

小红书排行榜 | 粉丝增量500w+,探寻爆款种草内容密码

随着兔年来临&#xff0c;回首上个月小红书母婴动态&#xff0c;行业热度依旧高涨&#xff0c;越来越多的达人和新品牌都涌入了小红书&#xff0c;母婴品牌要如何巧用小红书数据分析工具抢占用户心智&#xff1f;增量500w&#xff0b;的母婴博主有何亮点之处&#xff1f;和我一…

【甘特图软件部件】上海道宁与​DlhSoft助力您的Windows与移动应用程序开发

DlhSoft支持 使用可自定义的甘特图 时间轴、项目调度、资源负载图表、 看板、PERT图表和网络图 为您的WPF、ASP .NET、JavaScript 或macOS和iOS应用程序 设计更智能的应用程序 DlhSoft提供了 真正强大的甘特图软件部件 Apple平台开发人员可以 轻松地将其集成到 他们自…

equals和 == 的区别

1 问题equals和 都可以对于值类型&#xff0c;然后比较代数值是否相等。那么equals和 的具体区别是什么&#xff1f;2 方法 是运算符&#xff0c;可以使用在基本数据类型变量和引用数据类型变量中&#xff0c;如果比较的是基本数据类型&#xff1a;比较的是两个变量保存额数据…

嵌入式实时操作系统的设计与开发(二)

加载应用程序与创建程序运行环境 将应用程序从Flash加载到RAM的实现代码是一定在启动代码中的。 计算机系统的运行其实是CPU到相应的内存地址去取回指令&#xff0c;然后译码并执行指令&#xff0c;再依次从下一个地址取指、执行&#xff0c;而程序就是指令与数据的集合。 程序…

JAVAWeb开发(基于分片的网络状态查询方法、装置及存储介质)

本文基于分片的网络状态查询方法、装置及存储介质已是申请的专利。本人为第一发明人&#xff0c;这里给出来是提供一种写专利的范本&#xff0c;仅供参考。专利申请号&#xff1a;CN202110346967.5正文部分&#xff1a;技术领域本申请涉及但不限于计算机网络数据传输一致性领域…