我正在尝试使用指南安装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
2条答案
按热度按时间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
安装如下
它成功地部署了准入控制器并运行。
如果你的错误仍然存在,我建议你彻底清除安装程序,重新开始。
2ul0zpep2#
网络问题
检查pod的容器日志,发现由于无法与kubernetes API服务器通信,它无法在其命名空间中引用自己的配置Map。
我在防火墙中发现了SNI TLS异常,目标子网不在任何路由表中,因此内部流量试图外出并击中防火墙,因此SNI错误阻止了准入控制器Pod的运行