CKA 题目练习
type
status
date
slug
summary
tags
category
icon
password
name
Base
Pod
统计pod的数量
创建一个nginx的镜像
生成一个yaml文件但是不创建镜像
运行redis123的pod
创建redis-definition.yaml的pod
ReplicaSets
获取replicaset的信息
replicaset的详细信息
获取replicaset中pod是的详细信息
删除replicaset
复制新的副本集
Deployment
查看部署的数量
查看部署的详细信息
创建nginx的部署
生成一个yaml文件但是不创建部署
生成一个yaml文件但是不创建部署并将它保存到文件中
添加副本然后创建部署
在 k8s 版本 1.19+ 中,指定–replicas创建4个副本的部署
Service
查看service的数量
查看service的详细信息
创建yaml服务
Old
1、权限控制 RBAC(权重4%)
Context
为部署流水线创建一个新的 ClusterRole 并将其绑定到范围为特定的 namespace 的特定 ServiceAccount。
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 -hkubectl create rolebinding -h
2、查看 pod 的 CPU(权重5%)
Task
通过 pod label name=cpu-loader,找到运行时占用大量 CPU 的 pod,
并将占用 CPU 最高的 pod 名称写入文件 /opt/KUTR000401/KUTR00401.txt(已存在)。
直接查看 kubectl top pod -h
3、配置网络策略 NetworkPolicy(权重7%)
Task
在现有的 namespace my-app 中创建一个名为 allow-port-from-namespace 的新 NetworkPolicy。
确保新的 NetworkPolicy 允许 namespace echo 中的 Pods 连接到 namespace my-app 中的 Pods 的 9000 端口。
进一步确保新的 NetworkPolicy:
不允许没有在监听 端口 9000 的 Pods 的访问
不允许非来自 namespace echo 中的 Pods 的访问
4、暴露服务 service(权重7%)
Task
请重新配置现有的 deployment front-end 以及添加名为 http 的端口规范来公开现有容器 nginx 的端口 80/tcp。
创建一个名为 front-end-svc 的新 service,以公开容器端口 http。
配置此 service,以通过各个 Pod 所在的节点上的 NodePort 来公开他们。
查看kubectl create deploy -hkubectl create deployment test --image=busybox --port=5701 -o yamlkubectl expose deploy -h
5、创建 Ingress(权重7%)
Task
如下创建一个新的 nginx Ingress 资源:
名称: ping
Namespace: ing-internal
使用服务端口 5678 在路径 /hello 上公开服务 hello
可以使用以下命令检查服务 hello 的可用性,该命令应返回 hello:
curl -kL <INTERNAL_IP>/hello
6、扩容 deployment 副本数量(权重4%)
Task
将 deployment presentation 扩展至 4 个 pods
查看 kubectl scale deployment -h
7、调度 pod 到指定节点(权重4%)
Task
按如下要求调度一个 pod:
名称:nginx-kusc00401
Image:nginx
Node selector:disk=ssd
8、查看可用节点数量(权重4%)
Task
检查有多少 nodes 已准备就绪(不包括被打上 Taint:NoSchedule 的节点),
并将数量写入 /opt/KUSC00402/kusc00402.txt
9、创建多容器的 pod(权重4%)
Task
按如下要求调度一个 Pod:
名称:kucc8
app containers: 2
container 名称/images:
- nginx
- consu
10、创建 PV(权重4%)
Task
创建名为 app-config 的 persistent volume,容量为 1Gi,访问模式为 ReadWriteMany。
volume 类型为 hostPath,位于 /srv/app-config
11、创建 PVC(权重7%)
Task
创建一个新的 PersistentVolumeClaim:
名称: pv-volume
Class: csi-hostpath-sc
容量: 10Mi
创建一个新的 Pod,来将 PersistentVolumeClaim 作为 volume 进行挂载:
名称:web-server
Image:nginx:1.16
挂载路径:/usr/share/nginx/html
配置新的 Pod,以对 volume 具有 ReadWriteOnce 权限。
最后,使用 kubectl edit 或 kubectl patch 将 PersistentVolumeClaim 的容量扩展为 70Mi,并记录此更改。
12、查看 pod 日志(权重5%)
Task
监控 pod foo 的日志并:
提取与错误 RLIMIT_NOFILE 相对应的日志行
将这些日志行写入 /opt/KUTR00101/foo
13、使用 sidecar 代理容器日志(权重7%)
Context
将一个现有的 Pod 集成到 Kubernetes 的内置日志记录体系结构中(例如 kubectl logs)。
添加 streaming sidecar 容器是实现此要求的一种好方法。
Task
使用 busybox Image 来将名为 sidecar 的 sidecar 容器添加到现有的 Pod 11-factor-app 中。
新的 sidecar 容器必须运行以下命令:
/bin/sh -c tail -n+1 -f /var/log/11-factor-app.log
使用挂载在/var/log 的 Volume,使日志文件 11-factor-app.log 可用于 sidecar 容器。
除了添加所需要的 volume mount 以外,请勿更改现有容器的规格。
14、升级集群(权重7%)
Task
现有的 Kubernetes 集群正在运行版本 1.28.0。
仅将 master 节点
上的所有 Kubernetes 控制平面和节点组件升级到版本 1.28.1。
确保在升级之前 drain master 节点,并在升级后 uncordon master 节点。
可以使用以下命令,通过 ssh 连接到 master 节点:
ssh master01
可以使用以下命令,在该 master 节点上获取更高权限:
sudo -i
另外,在主节点上升级
kubelet 和 kubectl
请不要升级工作节点,etcd,container 管理器,CNI 插件, DNS 服务或任何其他插件。
15、备份还原 etcd(权重7%)
Task
首先,为运行在 https://11.0.1.111:2379 上的现有 etcd 实例创建快照并将快照保存到 /var/lib/backup/etcd-snapshot.db
(注意,真实考试中,这里写的是 https://127.0.0.1:2379)
为给定实例创建快照预计能在几秒钟内完成。 如果该操作似乎挂起,则命令可能有问题。用 CTRL + C 来取消操作,然后重试。
然后还原位于/data/backup/etcd-snapshot-previous.db 的现有先前快照。
提供了以下 TLS 证书和密钥,以通过 etcdctl 连接到服务器。
CA 证书: /opt/KUIN00601/ca.crt
客户端证书: /opt/KUIN00601/etcd-client.crt
客户端密钥: /opt/KUIN00601/etcd-client.key
16、排查集群中故障节点 (权重13%)
Task
名为 node02 的 Kubernetes worker node 处于 NotReady 状态。
调查发生这种情况的原因,并采取相应的措施将 node 恢复为 Ready 状态,确保所做的任何更改永久生效。可以使用以下命令,通过 ssh 连接到 node02 节点:
ssh node02
可以使用以下命令,在该节点上获取更高权限:
sudo -i
17、节点维护(权重4%)
Task
将名为 node02 的 node 设置为不可用,并重新调度该 node 上所有运行的 pods。
1.RBAC
命名空间ns1和ns2已经存在。
在这两个命名空间中创建名为pipeline的ServiceAccount。
这些SA应该被允许查看整个集群中的几乎所有内容。你可以使用默认的ClusterRole view来实现这一点。
这些SA应该被允许在其所在的命名空间中创建和删除Deployments。
创建一个名为deployment-clusterrole的clusterrole,该clusterrole只允许创建Deployment、Daemonset、Statefulset的create操作
在名字为app-team1的namespace下创建一个名为cicd-token的serviceAccount,并且将上一步创建clusterrole的权限绑定到该serviceAccount
2.节点维护
将名为ek8s-node-0的node节点设置为不可用,并重新调度该node上所有运行的pods。
3.升级 k8s
设置配置环境:
[candidate@node-1] $ kubectl config use-context mk8s
Task
现有的 Kubernetes 集群正在运行版本 1.28.0。仅将 master 节点上的所有 Kubernetes 控制平面和节点组件升级到版本 1.28.1。
确保在升级之前 drain master 节点,并在升级后 uncordon master 节点。
可以使用以下命令,通过 ssh 连接到 master 节点:
ssh master01
可以使用以下命令,在该 master 节点上获取更高权限:
sudo -i
另外,在主节点上升级 kubelet 和 kubectl。
请不要升级工作节点,etcd,container 管理器,CNI 插件, DNS 服务或任何其他插件。
4.备份还原 etcd
备份
还原
5.网络策略
6.四层负载均衡service
7.Ingress(?)
8.deploy 扩容
9.指定节点部署
创建一个Pod,名字为nginx-kusc00401,镜像地址是nginx,调度到具有disk=spinning标签的节点上
10.统计节点数量
11.多容器 pod
1213.按需创建PV和PVC并使用
14.监控 pod 日志
监控名为foobar的Pod的日志,并过滤出具有unable-access-website信息的行,然后将写入到 /opt/KUTR00101/foobar
15.sidecar
16.cpu 用量最高的 pod
17.排查故障节点
Loading...