You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AKS环境中Kyverno Admission Controller Pod卡在初始化状态

问题:Kyverno Admission Controller Pod卡在初始化状态

尝试安装Kyverno,完成Helm Chart部署后,Admission Controller Pod始终卡在Init:0/1状态,当前Pod状态如下:

kyverno-admission-controller-6cc87c69c7-d5fgm   0/1     Init:0/1   0          115s
kyverno-admission-controller-6cc87c69c7-mkdx2   0/1     Init:0/1   0          115s
kyverno-admission-controller-6cc87c69c7-zjlqr   0/1     Init:0/1   0          115s
kyverno-background-controller-bc589cf8c-kqw94   1/1     Running    0          115s
kyverno-background-controller-bc589cf8c-mxwrc   1/1     Running    0          115s
kyverno-cleanup-controller-5c9fdbbc5c-4gwxb     0/1     Running    0          115s
kyverno-cleanup-controller-5c9fdbbc5c-nmnr6     0/1     Running    0          115s
kyverno-reports-controller-6cc9fd6979-6s5qv     1/1     Running    0          115s
kyverno-reports-controller-6cc9fd6979-tbvx2     1/1     Running    0          115s

根据官方文档提示,AKS自带的Admission Enforcer会与Kyverno冲突并删除Webhooks,需为工作负载添加注解规避。于是清理环境后重新安装,使用包含指定注解的values.yaml:

config:
  webhookAnnotations:    
admissions.enforcer/disabled: "true"
admissionController:
  rbac:
    serviceAccount:
      annotations: 
        azure.workload.identity/client-id: ****
  podLabels:
    azure.workload.identity/use: "true"

执行的安装命令:

helm install kyverno kyverno/kyverno \
--namespace kyverno \
--set admissionController.replicas=3 \
--set backgroundController.replicas=2 \
--set cleanupController.replicas=2 \
--set reportsController.replicas=2 \
-f values.yaml

问题依旧存在。查看初始化容器日志,发现其无法与Kubernetes API通信,也无法访问自身命名空间内的ConfigMap:

W1017 01:35:47.048643       1 reflector.go:533] k8s.io/client-go@v0.27.1/tools/cache/reflector.go:231: failed to list *v1.ConfigMap: Get "https://10.0.0.1:443/api/v1/namespaces/kyverno/configmaps?fieldSelector=metadata.name%3Dkyverno-metrics&limit=500&resourceVersion=0": EOF

请问我遗漏了什么配置?或者可以从哪些方向深入排查以恢复这些Pod的功能?


排查与解决建议

1. 修复values.yaml的缩进错误

你的values.yaml中admissions.enforcer/disabled: "true"的缩进不正确,它应该属于webhookAnnotations的子项,否则Helm不会正确识别这个注解配置,导致Admission Enforcer仍在干扰Kyverno。修正后的values.yaml应该是:

config:
  webhookAnnotations:    
    admissions.enforcer/disabled: "true"
admissionController:
  rbac:
    serviceAccount:
      annotations: 
        azure.workload.identity/client-id: ****
  podLabels:
    azure.workload.identity/use: "true"

2. 检查Azure工作负载身份配置是否完整

Admission Controller的ServiceAccount配置了Azure工作负载身份注解,但需确保以下步骤已完成:

  • 已在Azure AD中创建对应的应用注册,并授予其访问Kubernetes API的权限
  • 已在AKS集群中启用工作负载身份
  • 已创建ServiceAccount与Azure AD应用的绑定关系
  • 验证Pod的服务账户是否正确关联,集群的OIDC issuer配置是否正常

3. 排查Kubernetes API通信问题

日志中的EOF错误通常表示API请求被中断或拒绝,可从以下方向排查:

  • 网络策略:检查kyverno命名空间是否有网络策略限制Pod访问API Server,或集群层面的网络策略是否拦截了流量
  • API Server状态:通过kubectl get nodes查看节点状态,确认AKS集群的API Server运行正常
  • ServiceAccount权限:执行kubectl auth can-i get configmaps -n kyverno --as=system:serviceaccount:kyverno:kyverno-admission-controller,验证ServiceAccount是否拥有访问ConfigMap的权限
  • SSL证书问题:检查Pod挂载的API Server SSL证书是否正常,是否存在证书信任问题

4. 查看初始化容器完整日志

Kyverno Admission Controller的初始化容器负责Webhook配置等前置操作,可通过以下命令获取完整日志:

kubectl logs <admission-controller-pod-name> -c init -n kyverno

(替换<admission-controller-pod-name>为实际Pod名称,可通过kubectl get pods -n kyverno获取)

5. 验证Webhook配置是否存在

如果Admission Enforcer未被正确禁用,Webhook可能被删除,可通过以下命令检查:

kubectl validatingwebhookconfigurations | grep kyverno
kubectl mutatingwebhookconfigurations | grep kyverno

内容的提问来源于stack exchange,提问作者Vetements

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 10:35:57