CKA1.24题库
- 云容器
- 2022-09-02
- 16热度
- 0评论
权限控制RBAC
考题
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。
解答
参考官方文档
Task1:创建一个名为 deployment-clusterrole 且仅允许创建以下资源类型的新 ClusterRole:Deployment、StatefulSet、ServiceAccount。
# 先查看帮助文档
root@node01:~# kubectl create clusterrole -h
# 执行创建
root@node01:~# kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployments,statefulsets,daemonsets
clusterrole.rbac.authorization.k8s.io/deployment-clusterrole created
Task2:在现有的 namespace app-team1 中创建一个名为 cicd-token 的新 ServiceAccount。
# 查看帮助文档
root@node01:~# kubectl create serviceaccount -h
# 执行创建 serviceaccount,可以简写成 sa
root@node01:~# kubectl create serviceaccount cicd-token -n app-team1
serviceaccount/cicd-token created
Task3:限于 namespace app-team1 中,将新的 ClusterRole deployment-clusterrole 绑定到新的 ServiceAccount cicd-token。
# 题目为“限于 namespace app-team1 中”,则创建 rolebinding,如果没说限于哪个具体的ns,则创建 clusterrolebinding
# 查看帮助文档
root@node01:~# kubectl create clusterrolebinding -h
root@node01:~# kubectl create rolebinding -h
# 执行创建:cicd-token-rolebinding为此rolebinding的名称,自己定义的,如题目定义则以题目为准,--serviceaccount 的格式必须为<namespace>:<name>
root@node01:~# kubectl create rolebinding cicd-token-rolebinding --clusterrole deployment-clusterrole --serviceaccount app-team1:cicd-token -n app-team1
rolebinding.rbac.authorization.k8s.io/cicd-token-rolebinding created
# 检查下
root@node01:~# kubectl describe rolebinding cicd-token-rolebinding -n app-team1
Name: cicd-token-rolebinding
Labels: <none>
Annotations: <none>
Role:
Kind: ClusterRole
Name: deployment-clusterrole
Subjects:
Kind Name Namespace
---- ---- ---------
ServiceAccount cicd-token app-team1
查看POD的CPU
考题
Task
通过 pod label name=cpu-loader,找到运行时占用大量 CPU 的 pod,
并将占用 CPU 最高的 pod 名称写入文件 /opt/KUTR000401/KUTR00401.txt(已存在)。
解答
参考官方文档
# 查看帮助文档
root@node01:~# kubectl top pod -h
# 执行查看CPU指标,并排序
root@node01:~# kubectl top pod -l name=cpu-loader --sort-by=cpu -A
# 将查出来的<POD_NAME>写入文件
root@node01:~# echo "查出来的 Pod Name" > /opt/KUTR000401/KUTR00401.txt
# 检查下
root@node01:~# cat /opt/KUTR000401/KUTR00401.txt
配置网络策略 NetworkPolicy
考题
Task
- 在现有的 namespace my-app 中创建一个名为 allow-port-from-namespace 的新 NetworkPolicy。
- 确保新的 NetworkPolicy 允许 namespace echo 中的 Pods 连接到 namespace my-app 中的 Pods 的 9000 端口。
- 进一步确保新的 NetworkPolicy:
- 不允许对没有在监听 端口 9000 的 Pods 的访问
- 不允许非来自 namespace echo 中的 Pods 的访问
解答
参考官方文档
- 编写yaml文件:
root@node01:~# cat NetworkPolicy.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-port-from-namespace
namespace: my-app #被访问者的命名空间
spec:
podSelector: #这两行必须要写,或者也可以写成一行为 podSelector: {}
matchLabels: {}
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector:
matchLabels:
project: echo #访问者的命名空间的标签 label
#- podSelector: {} #注意,这个不写。如果 ingress 里也写了- podSelector: {},则会导致 my-app 中的 pod 可以访问 my-app 中 pod 的 9000 了,这样不满足题目要求不允许非来自 namespace echo 中的 Pods 的访问。
ports:
- protocol: TCP
port: 9000 #被访问者公开的端口
- 执行建立NetworkPolicy:
root@node01:~# kubectl apply -f NetworkPolicy.yaml
networkpolicy.networking.k8s.io/allow-port-from-namespace created
- 检查:
root@node01:~# kubectl get networkpolicies.networking.k8s.io -n my-app
NAME POD-SELECTOR AGE
allow-port-from-namespace <none> 45s
root@node01:~# kubectl describe networkpolicies.networking.k8s.io allow-port-from-namespace -n my-app
Name: allow-port-from-namespace
Namespace: my-app
Created on: 2022-09-02 21:47:09 +0800 CST
Labels: <none>
Annotations: <none>
Spec:
PodSelector: <none> (Allowing the specific traffic to all pods in this namespace)
Allowing ingress traffic:
To Port: 9000/TCP
From:
NamespaceSelector: project=echo
Not affecting egress traffic
Policy Types: Ingress
暴露服务 service
考题
Task
- 请重新配置现有的 deployment front-end 以及添加名为 http 的端口规范来公开现有容器 nginx 的端口 80/tcp。
- 创建一个名为 front-end-svc 的新 service,以公开容器端口 http。
- 配置此 service,以通过各个 Pod 所在的节点上的 NodePort 来公开他们。
解答
参考官方文档