kubernetes 无法使用Helm部署Ingress Nginx

b1uwtaje  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(1)|浏览(237)

我使用一个helm来部署集群,并包括入口图表依赖。

apiVersion: v2
name: aloco
description: A Helm chart for Kubernetes

type: application

version: 0.1.0

appVersion: "1.16.0"

dependencies:
  - name: ingress-nginx
    version: "4.7.*"
    repository: "https://kubernetes.github.io/ingress-nginx"

Helm在部署ingress时会将aloco添加到服务名称中,而ingress会变成aloco-ingress-nginx-controller-admission,因为helm添加了图表名称。

NAMESPACE     NAME                                       TYPE           CLUSTER-IP       EXTERNAL-IP       PORT(S)                      AGE
default       aloco-ingress-nginx-controller             LoadBalancer   10.245.104.155   159.223.250.102   80:31357/TCP,443:30712/TCP   12m
default       aloco-ingress-nginx-controller-admission   ClusterIP      10.245.42.135    <none>            443/TCP                      12m

因为helm将图表名称添加到入口,所以我得到了一个错误,即ingress-nginx-controller-admission未找到

Error: UPGRADE FAILED: failed to create resource: Internal error occurred: failed calling webhook "validate.nginx.ingress.kubernetes.io": failed to call webhook: Post "https://ingress-nginx-controller-admission.ingress-nginx.svc:443/networking/v1/ingresses?timeout=29s": service "ingress-nginx-controller-admission" not found

他们是选择删除aloco还是更改validate.nginx.ingress.kubernetes.io

xsuvu9jc

xsuvu9jc1#

如果您的集群上安装了另一个Nginx ingress控制器,并且该图表的入场webhook pod关闭或出错,则会发生此错误。或者,就像您的情况一样,看起来其他服务没有正确地拆除
原因实际上在你的输出中:

failed to call webhook: Post "https://ingress-nginx-controller-admission.ingress-nginx.svc:443/networking/v1/ingresses?timeout=29s": service "ingress-nginx-controller-admission" not found

检查是否在ingress-nginx命名空间中安装了nginx图表。
你是手动删除它而不是通过helm delete吗?你可能做了,因为这是最常见的原因,离开周围的垃圾。
删除阻止安装的webhook配置:

kubectl get validatingwebhookconfigurations

这将列出所有的validatingwebhook配置。应该有一个在那里标记ingress-nginx-admission或类似的。
编辑它或使用jq(或使用-o jsonpath)确保它指向您删除的服务(您将在webhooks[0].clientConfig.service下看到配置指向的服务

kubectl edit validatingwebhookconfiguration {name of config}

kubectl get validatingwebhookconfigurations {name of config} -o json | jq .webhooks[0].clientConfig.service

如果是指向已删除服务的服务,则可以将其删除

kubectl delete validatingwebhookconfiguration -n {namespace} {name of config}

相关问题