1、权限控制 RBAC
1.1 题目详情
设置配置环境:
[candidate@node-1] $ kubectl config use-context k8s
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。
1.2 参考链接
无
1.3 解题流程
切换集群:
创建 ClusterRole(集群角色):
创建 ServiceAccount(服务账号):
创建 RoleBinding(角色绑定):
验证查看(考试时,所有的检查项,都可以不做):
2、扩容 deployment 副本数量
2.1 题目详情
设置配置环境:
[candidate@node-1] $ kubectl config use-context k8s
Task
将 deployment presentation 扩展至 4 个 pods
2.2 参考链接
无
2.3 解题流程
切换集群:
检查现有 deployment 的 pod 数量:
将 deployment presentation 扩展至 4 个 pods:
验证查看(考试时,所有的检查项,都可以不做):
3、配置网络策略 NetworkPolicy
3.1 题目详情
设置配置环境:
[candidate@node-1] $ kubectl config use-context hk8s
Task
在现有的 namespace my-app 中创建一个名为 allow-port-from-namespace 的新 NetworkPolicy。
确保新的 NetworkPolicy 允许 namespace echo 中的 Pods 连接到 namespace my-app 中的 Pods 的 9000 端口。
进一步确保新的 NetworkPolicy:
不允许对没有在监听 端口 9000 的 Pods 的访问
不允许非来自 namespace echo 中的 Pods 的访问
3.2 参考链接
https://kubernetes.io/docs/concepts/services-networking/network-policies/
3.3 解题流程
切换集群:
查看所有 ns 的标签 label:
打标签 echo :
手动编写一个 yaml 文件(名字任意):
查看参考链接并复制内容:
将文档内容进行修改:
创建:
验证查看(考试时,所有的检查项,都可以不做):
4、暴露服务 service
4.1 题目详情
设置配置环境:
[candidate@node-1] $ kubectl config use-context k8s
Task
请重新配置现有的 deployment front-end 以及添加名为 http 的端口规范来公开现有容器 nginx 的端口 80/tcp。
创建一个名为 front-end-svc 的新 service,以公开容器端口 http。
配置此 service,以通过各个 Pod 所在的节点上的 NodePort 来公开他们。
4.2 参考链接
https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
4.3 解题流程
切换集群:
检查 deployment 信息,并记录 SELECTOR 的 Lable 标签,这里是 app=front-end:
添加端口信息:(官方文档只给出两行需要自己在手动添加两行)
暴露对应端口:
curl 检查(考试时,所有的检查项,都可以不做):
5、创建 Ingress
5.1 题目详情
设置配置环境:
[candidate@node-1] $ kubectl config use-context k8s
Task
如下创建一个新的 nginx Ingress 资源:
名称: ping
Namespace: ing-internal
使用服务端口 5678 在路径 /hello 上公开服务 hello
可以使用以下命令检查服务 hello 的可用性,该命令应返回 hello
curl -kL <INTERNAL_IP>/hello
5.2 参考链接
https://kubernetes.io/docs/concepts/services-networking/ingress/
5.3 解题流程
切换集群:
检查环境里 ingressclass 的名字:
创建编写 ingress 的 yaml:
创建:
验证查看(考试时,所有的检查项,都可以不做):
6、查看 pod 的 CPU
6.1 题目详情
设置配置环境:
[candidate@node-1] $ kubectl config use-context k8s
Task
通过 pod label name=cpu-loader,找到运行时占用大量 CPU 的 pod,
并将占用 CPU 最高的 pod 名称写入文件 /opt/KUTR000401/KUTR00401.txt(已存在)。
6.2 参考链接
无
6.3 解题流程
切换集群:
查看 pod 名称:
将 cpu 占用最多的 pod 的 name 写入/opt/test1.txt 文件:
验证查看(考试时,所有的检查项,都可以不做):
7、调度 pod 到指定节点
7.1 题目详情
设置配置环境:
[candidate@node-1] $ kubectl config use-context k8s
Task
按如下要求调度一个 pod:
名称:nginx-kusc00401
Image:nginx
Node selector:disk=ssd
7.2 参考链接
https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes/
7.3 解题流程
切换集群:
先检查一下是否有这个 pod,因为没有创建,所以需要创建:
检查一下 node 的标签:
创建并参考官方文档编写yaml:
修改文件内容:
创建:
验证查看(考试时,所有的检查项,都可以不做):
8、查看可用节点数量
8.1 题目详情
设置配置环境:
[candidate@node-1] $ kubectl config use-context k8s
Task
检查有多少 nodes 已准备就绪(不包括被打上 Taint:NoSchedule 的节点),
并将数量写入 /opt/KUSC00402/kusc00402.txt
8.2 参考链接
无
8.3 解题流程
切换集群:
检查几个打了 NoSchedule:
写入文件:
验证查看(考试时,所有的检查项,都可以不做):
9、创建多容器的 pod
9.1 题目详情
设置配置环境:
[candidate@node-1] $ kubectl config use-context k8s
Task
按如下要求调度一个 Pod:
名称:kucc8
app containers: 2
container 名称/images:
nginx
memcached
9.2 参考链接
https://kubernetes.io/docs/concepts/workloads/pods/
9.3 解题流程
切换集群:
创建 yaml 文件:
根据官方文档进行修改:
创建:
验证查看(考试时,所有的检查项,都可以不做):
10、创建 PV
10.1 题目详情
设置配置环境:
[candidate@node-1] $ kubectl config use-context hk8s
Task
创建名为 app-config 的 persistent volume,容量为 1Gi,访问模式为 ReadWriteMany。
volume 类型为 hostPath,位于 /srv/app-config
10.2 参考链接
https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/
10.3 解题流程
切换集群:
创建 yaml 文件:
根据官方文档进行编辑修改:
创建:
验证查看(考试时,所有的检查项,都可以不做):