CKA考试真题(1)-- 绝对干货!

目录

前言

1. 创建rabc权限

2. 查询cpu占用率最高的pod

3. deployment扩容副本

4. pod通过label标签指定节点部署

5. 创建pv

6. 查询pod日志

7. 排查集群故障节点

8. 查看集群可用节点

9. 创建包含多个容器的pod

10. 集群节点维护


前言

17道真题难度等级

一级 rbac cpu 扩容 pod指定节点 pv pod日志 排障 查看可用节点 多容器pod 节点维护

二级 networkpolicy service  ingress  pvc

三级 sidecar 升级集群 备份还原etcd

本系列有四篇博客,本博客为一级难度篇

CKA注意事项:CKA考试注意事项--考前必看!_luo_guibin的博客-CSDN博客

第一篇:CKA认证真题(1)-- 必考_luo_guibin的博客-CSDN博客

第二篇:CKA考试真题(2)_luo_guibin的博客-CSDN博客

第三篇:CKA认证真题(3)-- 绝对干货!_luo_guibin的博客-CSDN博客

1. 创建rabc权限

CKA考试真题(1)-- 绝对干货!_第1张图片


Task

创建一个名为 deployment-clusterrole 且仅允许创建以下资源类型的新 ClusterRole

Deployment

StatefulSet

DaemonSet

在现有的 namespace app-team1 中创建一个名为 cicd-token 的新 ServiceAccount

限于 namespace app-team1 中,将新的 ClusterRole deployment-clusterrole 绑定到新的 ServiceAccount cicd-token


#答案

kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployments,statefulsets,daemonsets

kubectl -n app-team1 create serviceaccount cicd-token

kubectl -n app-team1 create rolebinding cicd-token-rolebinding --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token

rolebinding 后面的名字 cicd-token-rolebinding 随便起的,因为题目中没有要求,如果题目中有要求,就不能随便起了。

题目中写了“限于 namespace app-team1 中”,则创建 rolebinding。没有写的话,则创建 clusterrolebinding。

2. 查询cpu占用率最高的pod

CKA考试真题(1)-- 绝对干货!_第2张图片


Task

通过 pod label name=overloaded-cpu,找到运行时占用大量 CPU 的 pod,

并将占用 CPU 最高的 pod 名称写入文件 /opt/KUTR000401/KUTR00401.txt(已存在)。


#答案

kubectl top pod -l name=overloaded-cpu --sort-by=cpu -A

echo "查出来的 Pod Name" > /opt/KUTR000401/KUTR00401.txt

#将cpu占用最高的pod写入指定文件即可。

3. deployment扩容副本

CKA考试真题(1)-- 绝对干货!_第3张图片


Task

将 deployment webserver 扩展至 4 个 pods


#答案

kubectl scale deployment webserver --replicas=6

4. pod通过label标签指定节点部署

CKA考试真题(1)-- 绝对干货!_第4张图片


Task

按如下要求调度一个 pod:

名称:nginx-kusc00401

Image:nginx

Node selector:disk=ssd


参考文档:将 Pod 分配给节点 | Kubernetes

#答案

kubectl get nodes --show-labels | grep 'disk=ssd'
一般是已经存在的,如果不存在,任选一个节点手动新建label
kubectl label nodes node01 disk=ssd

vi label-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: nginx-kusc00401
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    disk: ssd

kubectl apply -f label-pod.yaml

5. 创建pv

CKA考试真题(1)-- 绝对干货!_第5张图片


Task

创建名为 app-data 的 persistent volume,容量为 1Gi,访问模式为 ReadWriteMany

volume 类型为 hostPath,位于 /srv/app-data


参考文档:配置 Pod 以使用 PersistentVolume 作为存储 | Kubernetes

CKA考试真题(1)-- 绝对干货!_第6张图片

#答案

vi pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: app-data
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  hostPath:
    path: "/srv/app-data"

kubectl apply -f pv.yaml

#按照题目更改name、容量、访问模式、目录即可,类型固定是hostPath,删除label和storageclassname属性。

6. 查询pod日志

CKA考试真题(1)-- 绝对干货!_第7张图片


Task

监控 pod foobar 的日志并:

提取与错误 unable-to-access-website 相对应的日志行

将这些日志行写入 /opt/KUTR00101/foobar


#答案

kubectl logs foobar | grep "unable-to-access-website" > /opt/KUTR00101/foobar

7. 排查集群故障节点

CKA考试真题(1)-- 绝对干货!_第8张图片


Task

名为 wk8s-node-0 的 Kubernetes worker node 处于 NotReady 状态。

调查发生这种情况的原因,并采取相应的措施将 node 恢复为 Ready 状态,确保所做的任何更改永久生效


本质原因就是wk8s-node-0的kubelet被停止运行了,重启kubelet并设置开机自启动即可。

#答案

ssh wk8s-node-0

sudo -i

systemctl start kubelet
systemctl enable kubelet

exit #退出root
exit #退出wk8s-node-0回到wk8s-node-1

8. 查看集群可用节点

CKA考试真题(1)-- 绝对干货!_第9张图片


Task

检查有多少 nodes 已准备就绪(不包括被打上 Taint:NoSchedule 的节点),

并将数量写入 /opt/KUSC00402/kusc00402.txt


#答案

kubectl describe nodes | grep -i Taints

echo "没有NoSchedule标记的节点数" > /opt/KUSC00402/kusc00402.txt

9. 创建包含多个容器的pod

CKA考试真题(1)-- 绝对干货!_第10张图片

Task

按如下要求调度一个 Pod:

名称:kucc4

app containers: 2

container 名称/images:

nginx

⚫ memcached

参考文档:Pod | Kubernetes

CKA考试真题(1)-- 绝对干货!_第11张图片

#更改pod的name,删除容器端口号属性,新增容器。

#答案

vi con-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: kucc4
spec:
  containers:
  - name: nginx
    image: nginx
  - name: memcached
    image: memcached

kubcctl apply -f con-pod.yaml

10. 集群节点维护

CKA考试真题(1)-- 绝对干货!_第12张图片


Task

将名为 ek8s-node-0 的 node 设置为不可用,并重新调度该 node 上所有运行的 pods。


#答案

kubectl cordon ek8s-node-0

kubectl drain ek8s-node-0 --ignore-daemonsets

# 但如果执行后有报错则需要加上--delete-emptydir-data --force,会强制将 pod 移除,一般用不到。
# kubectl drain node02 --ignore-daemonsets --delete-emptydir-data --force

你可能感兴趣的:(cka认证,k8s,cka认证,cka考试)