akv2k8s无法注入Secret至环境及修复失败问题排查
AKS 1.25.4 + akv2k8s 2.3.2 部署问题排查建议
问题梳理
- 用Terraform搭建了AKS 1.25.4集群,基础nginx Pod可正常运行,但添加环境注入的Secret后,ReplicaSet启动失败,报错调用webhook时访问ACR认证未授权
- 按官方文档设置
addAzurePodIdentityException=true升级akv2k8s 2.3.2时,因找不到AzurePodIdentityExceptionCRD导致升级失败 - 前置背景:此前Terraform代码曾部署AAD Pod Identity,但未应用至该新集群,已在GitHub提交相关Issue
解决步骤
1. 处理ACR认证未授权问题
- 检查akv2k8s权限:确认akv2k8s使用的服务主体/托管标识是否具备ACR的
AcrPull权限;若使用Pod Identity,需验证身份绑定是否正确关联到akv2k8s所在的Namespace和ServiceAccount - 排查webhook配置:执行
kubectl describe mutatingwebhookconfiguration akv2k8s-webhook查看webhook的客户端认证配置,确认凭证是否配置正确 - 临时验证测试:在Pod部署中添加
akv2k8s.io/inject-secret: "false"注解,跳过Secret注入流程,确认Pod是否能正常启动,以此锁定是否为Secret注入环节的权限问题
2. 解决AzurePodIdentityException CRD缺失问题
- 手动安装CRD:从AAD Pod Identity的官方代码仓库中提取
AzurePodIdentityException对应的CRD定义内容,保存为本地yaml文件后,执行kubectl apply -f <本地文件名>.yaml完成安装 - 排查Terraform残留配置:检查之前部署AAD Pod Identity的Terraform代码是否对新集群存在隐性影响,比如Provider层面是否全局配置了Pod Identity相关参数,导致akv2k8s升级时依赖未部署的CRD
- 临时调整升级参数:若暂时不需要Pod Identity例外配置,可先移除
addAzurePodIdentityException=true参数完成akv2k8s升级,后续再按需配置Pod Identity相关组件
3. 额外排查方向
- 检查AKS集群Pod Identity默认状态:AKS 1.25+版本若未显式禁用Pod Identity,可能存在默认组件冲突,执行
az aks show -g <资源组名> -n <集群名> --query podIdentityProfile查看集群Pod Identity配置 - 验证Secret注入格式:确认akv2k8s中环境注入的Secret定义是否正确,比如Secret名称、Key是否与AKV中的对应,避免因配置错误导致间接认证失败
内容的提问来源于stack exchange,提问作者mark
相关产品推荐
相关产品推荐

