azure Kyverno准入控制器pod卡在init上(aks)

disho6za  于 2023-10-22  发布在  其他
关注(0)|答案(2)|浏览(131)

我正在尝试使用指南安装Kyverno:
https://kyverno.io/docs/installation/https://nirmata.com/2023/10/13/simplify-image-verification-with-kyverno-and-azure-ad-workload-identity-on-aks/
然而,在成功安装了helm chart之后,准入控制器pod在init上永远挂起

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。
https://kyverno.io/docs/installation/platform-notes/#notes-for-aks-usershttps://learn.microsoft.com/en-us/azure/aks/faq#can-admission-controller-webhooks-impact-kube-system-and-internal-aks-namespaces
将电路板清洗干净并重新安装,但这一次带有一个值。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

仍然是同样的问题,任何想法我错过了什么或在哪里挖掘更深,让这些豆荚的功能?
编辑:
从init容器获取日志,看起来它与kubernetes API通信和引用自己命名空间中的对象时遇到了问题

W1017 01:35:47.048643       1 reflector.go:533] k8s.io/[email protected]/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
jhiyze9q

jhiyze9q1#

我完全按照您的document中的步骤操作,并且成功地在我的AKS集群上部署了kyverno。我可以看到你遵循了生产方法,所以我遵循了同样的方法来验证我是否得到了同样的错误。
这里我使用了一个名为Kyverno-Prod的AKS集群,配置如下:K8s版本- 1.26.6类型-生产环境,带2个节点池节点大小- Standard_D8ds_v5

我的具体步骤-使用az aks get-credentials --resource-group myresourcegroup --name Kyverno-Prod登录集群

已验证我的节点已启动并使用kubectl get nodes运行。
如果我有任何可用的图表使用helm list添加了kyverno repo使用helm repo add kyverno https://kyverno.github.io/kyverno/
添加后,更新了Helm并列出了所有适用于Kyverno的版本

使用以下命令在名为kyverno的专用命名空间上安装kyverno版本1.10.3

helm install kyverno kyverno/kyverno -n kyverno --create-namespace \
--set admissionController.replicas=3 \
--set backgroundController.replicas=2 \
--set cleanupController.replicas=2 \
--set reportsController.replicas=2

安装如下

NAME: kyverno
LAST DEPLOYED: Tue Oct 17 06:04:59 2023
NAMESPACE: kyverno
STATUS: deployed
REVISION: 1
NOTES:
Chart version: 3.0.5
Kyverno version: v1.10.3

Thank you for installing kyverno! Your release is named kyverno

它成功地部署了准入控制器并运行。

如果你的错误仍然存在,我建议你彻底清除安装程序,重新开始。

2ul0zpep

2ul0zpep2#

网络问题
检查pod的容器日志,发现由于无法与kubernetes API服务器通信,它无法在其命名空间中引用自己的配置Map。
我在防火墙中发现了SNI TLS异常,目标子网不在任何路由表中,因此内部流量试图外出并击中防火墙,因此SNI错误阻止了准入控制器Pod的运行

相关问题