Context
您组织的安全策略包括:
- ServiceAccount 不得自动挂载 API 凭据
- ServiceAccount 名称必须以 "-sa" 结尾
清单文件 /cks/sa/pod1.yaml 中指定的 Pod 由于 ServiceAccount 指定错误而无法调度。
请完成以下项目:
Task
- 在现有 namespace qa 中创建一个名为 kackend-sa 的新 ServiceAccount,
确保此 ServiceAccount 不自动挂载 API 凭据。
- 使用 /cks/sa/pod1.yaml 中的清单文件来创建一个Pod。
- 最后,清理 namespace qa 中任何未使用的 ServiceAccount。
参考资料
https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-service-account/
答题
先切换集群
kubectl config use-context KSCH00301
- 创建 ServiceAccount
vi qa-ns.yaml 根据官网修改如下内容 apiVersion: v1 kind: ServiceAccount metadata: name: backend-sa # 修改name namespace: qa # 注意添加 namespace automountServiceAccountToken: false # 修改为 false, 表示不自动关注 secret kubectl apply -f qa-ns.yaml kubectl get sa -n qa
- 创建 Pod 使用该 ServiceAccount
vi /cka/sa/pod1.yaml 修改如下内容 metadata: name: backend namespace: qa # 注意命名空间是否对 spec: serviceAccountName: backend-sa # 没有则添加一行,有则修改(考试时有,修改即可) containers: ......
kubectl apply -f /cka/sa/pod1.yaml kubectl get pod -n qa
- 删除没有使用的 ServiceAccount
查看qa命名空间下的所有sa kubect get sa -n qa 查看qa命名空间下已经在用的sa kubectl get pod -n qa -o yaml | grep -i serviceAccountName 删除qa命名空间下不用的sa kubect delete sa test01 -n qa