真题解析
题目


Context
ServiceAccount 不得自动挂载 API 凭据
ServiceAccount 名称必须以 ".sa" 结尾
清单文件 /home/candidate/KSCH00301/pod-manifest.yaml 中指定的 Pod 由于 ServiceAccount 指定错误而无法调度。
请完成以下项目:
Task
在现有 namespace prod 中创建一个名为 backend-sa 的新 ServiceAccount 确保此 ServiceAccount 不自动挂载 API 凭据。
使用 /home/candidate/KSCH00301/pod-manifest.yaml 中的清单文件来创建一个 Pod。
最后,清理 namespace prod 中任何未使用的 ServiceAccount。
解析
创建 SA
# vim backend-sa.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
namespace: prod
name: backend-sa
automountServiceAccountToken: false
kubectl create -f backend-sa.yaml创建 Pod
# vim pod-manifest.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: backend
name: backend
namespace: prod
spec:
serviceAccountName: backend-sa # 添加此项配置
containers:
- image: nginx
name: backend
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}# 创建 Pod
kubectl create -f pod-manifest.yaml
# 验证
kubectl get pod backend -n prod -o yaml | grep -i service
enableServiceLinks: true
serviceAccount: backend-sa
serviceAccountName: backend-sa删除未使用的 SA
# 查看 namespace 为 prod 下的所有 SA
kubectl get sa -n prod
NAME SECRETS AGE
backend-sa 0 22m
default 0 33m
# 查看 namespace 为 prod 下正在运行的 Pod 中所使用的 SA
kubectl get pod -n prod -o yaml | grep -i "serviceaccount:"
serviceAccount: backend-sa
# 根据上述查询结果可知,backend-sa 在使用,故删除其它 SA
kubectl delete sa default -n prod Last updated