带PodSecurityPolicy的EKS集群安装Telepresence时uninstall-agent创建失败
Telepresence卸载作业PSP准入报错解决
定位创建Pod使用的ServiceAccount
执行以下步骤快速定位关联账号:
- 首先在
ambassador命名空间下查询所有Job资源,找到前缀为uninstall-agents的失败任务:kubectl get jobs -n ambassador - 拿到失败Job的完整名称后,查询其配置中绑定的ServiceAccount:
kubectl get job <替换为实际的uninstall-agents作业全名> -n ambassador -o yaml | grep serviceAccountName
默认情况下,该作业使用ambassador命名空间下名为traffic-manager的ServiceAccount。
权限调整方案
你之前修改的traffic-manager-ambassador ClusterRole没有配置PodSecurityPolicy的使用权限,所以动态创建的卸载作业Pod会被PSP准入控制器拦截,按以下方式调整即可:
- 编辑
traffic-manager-ambassadorClusterRole,在rules字段下新增PSP使用规则,替换成你集群内已有的合规PSP名称:- apiGroups: ["policy"] resourceNames: ["<替换为你的集群内可用PSP名称>"] resources: ["podsecuritypolicies"] verbs: ["use"] - 保存规则后,删除之前创建失败的
uninstall-agents前缀的Job,后续重新触发Telepresence相关操作时,新拉起的作业Pod即可正常通过PSP校验。
如果不想修改现有ClusterRole,也可以直接新建ClusterRoleBinding,将
ambassador命名空间下的traffic-managerServiceAccount,与你集群中已经授予了对应PSP使用权限的角色绑定,效果完全一致。
内容的提问来源于stack exchange,提问作者Paul Johnson
相关产品推荐
相关产品推荐

