Nginx Ingress:找不到 "ingress-nginx-controller-admission "服务。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx Ingress:找不到 "ingress-nginx-controller-admission "服务。相关的知识,希望对你有一定的参考价值。
大约一年前,我们为一个客户创建了一个kubernetes集群,有两个环境;暂存和生产在命名空间中分离。我们目前正在开发下一个版本的应用,需要一个环境来进行开发工作,所以我们在自己的命名空间中创建了一个测试版环境。
这是一个裸金属的kubernetes集群,使用MetalLB和和nginx-ingress。nginx ingress控制器是用 helm安装的,而 ingresses是用下面的manifest创建的(命名空间是由我们的部署管道强制执行的,在manifest中不可见)。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: api-ingress
annotations:
#ingress.kubernetes.io/ssl-redirect: "true"
#kubernetes.io/tls-acme: "true"
#certmanager.k8s.io/issuer: "letsencrypt-staging"
#certmanager.k8s.io/acme-challenge-type: http01
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/configuration-snippet: |
more_set_headers "X-Robots-Tag: noindex, nofollow";
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/cors-allow-methods: "GET, OPTIONS"
nginx.ingress.kubernetes.io/cors-allow-origin: "*"
nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
spec:
tls:
- hosts:
- ${API_DOMAIN}
secretName: api-cert
rules:
- host: ${API_DOMAIN}
http:
paths:
- backend:
serviceName: api
servicePort: 80
当应用manifest时,kubernetes响应以下错误。
来自服务器的错误(InternalError):创建 "STDIN "时出错。发生内部错误:调用webhook "validate.nginx.ingress.kubernetes.io "失败。发布 https:/ingress-nginx-controller-admission.ingress-nginx.svc:443extensionsv1beta1ingresses?timeout=30s。:未找到服务 "ingress-nginx-controller-admission"。
我已经尝试将入口清单的apiVersion更新为 networking.k8s.io/v1beta1
(这是新的nginx-ingress控制器通过 helm安装的apiVersion),但我得到了同样的错误。
我初步怀疑这与当前安装的nginx-ingress和一年前安装的nginx-ingress之间的变化有关,即使nginx-ingress控制器被命名空间分开。但我找不到任何被称为 ingress-nginx-controller-admission
的任何命名空间中,所以我不知道该如何继续。
我也有同样的问题,并从另一个网站上找到了一个解决方案 SO线.
我之前用manifests安装了nginx-ingress。我删除了它创建的命名空间和 在文档中提到的 clusterrole 和 clusterrolebinding。但这并没有消除 ValidatingWebhookConfiguration
安装在清单中,但在默认情况下使用 helm 时则不需要。因为 Arghya 上文中提到,可以使用舵机参数启用。
一旦我删除了 ValidatingWebhookConfiguration
我的头盔安装得很顺利。
kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission
你可以检查是否有一个 验证网钩 和一个服务。如果它们不存在,请仔细检查部署并添加这些。
kubectl get -A ValidatingWebhookConfiguration
NAME CREATED AT
ingress-nginx-admission 2020-04-22T15:01:33Z
kubectl get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller NodePort 10.96.212.217 <none> 80:32268/TCP,443:32683/TCP 2m34s
ingress-nginx-controller-admission ClusterIP 10.96.151.42 <none> 443/TCP 2m34s
部署 yamls 此处 有webhook和服务。
由于你已经使用了 helm 来安装它,你可以通过 helm 的参数来启用或禁用 webhook,如定义的 此处
在webhook中,SSL证书似乎有一些问题。
Chaning failurePolicy: 失败到忽略对我来说是可行的
kubectl apply -f https:/raw.githubusercontent.comkubernetesingress-nginxcontroller-0.32.0deploystaticproviderbaremetaldeploy.yaml。
更多信息请查看。
https:/kubernetes.iodocsreferenceaccess-authn-authzextensible-admission-controllers。
以上是关于Nginx Ingress:找不到 "ingress-nginx-controller-admission "服务。的主要内容,如果未能解决你的问题,请参考以下文章
Kubernetes Nginx Ingress 找不到服务端点
在 Ingress 资源中找不到端点“default-http-backend”
nginx-ingress之server-snippet用法
Nginx 从 docker-compose 运行返回“在上游找不到主机”