bounty还有7天到期。回答此问题可获得+250声望奖励。Evan Carroll想要奖励现有答案。
我们大约在一年前为一个客户创建了一个Kubernetes集群,有两个环境;在名称空间中分隔的分段和生产。我们目前正在开发应用程序的下一个版本,并且需要一个环境来进行这项开发工作,因此我们在它自己的名称空间中创建了一个beta环境。
这是一个带有MetalLB和nginx-ingress的裸机kubernetes集群。nginx的入口控制器与helm一起安装,入口使用以下清单创建(命名空间由我们的部署管道强制执行,在清单中不可见):
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“失败:Post https://ingress-nginx-controller-admission.ingress-nginx.svc:443/extensions/v1beta1/ingresses?timeout=30s:服务“ingress-nginx-controller-admission”未找到
我尝试将ingress清单的apiVersion更新为networking.k8s.io/v1beta1
(这是通过helm安装的新nginx-ingress控制器的apiVersion),但我得到了相同的错误。
我最初的怀疑是,这与当前安装和一年前安装之间的nginx-ingress变化有关,即使ingress控制器是由命名空间分隔的。但是我在我的任何命名空间中都找不到任何名为ingress-nginx-controller-admission
的服务,所以我不知道如何继续。
6条答案
按热度按时间rsl1atfo1#
我遇到了同样的问题,并从另一个SO thread找到了解决方案。
我之前已经使用清单安装了nginx-ingress。我删除了它创建的命名空间,以及文档中提到的clusterrole和clusterrolebinding,但这并没有删除清单中安装的
ValidatingWebhookConfiguration
,但默认情况下使用helm时不会。正如上面提到的Arghya,它可以使用helm参数启用。一旦我删除了
ValidatingWebhookConfiguration
,我的 Helm 安装就完美无瑕了。jrcvhitl2#
您可以检查是否有验证webhook和服务。如果它们不存在,请仔细检查部署并添加这些。
部署yamls here具有webhook和service。
因为你已经使用helm来安装它,你可以通过helm参数来启用/禁用webhook,定义如下:here
xzv2uavs3#
SSL证书似乎在webhook中存在一些问题。
更改失败策略:《无法忽视》在我的
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-0.32.0/deploy/static/provider/baremetal/deploy.yaml
查看更多信息:
https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/
pokxtpni4#
我的问题被证明是SSL证书问题。删除“ValidatingWebhookConfiguration”后,问题解决
klsxnrf15#
对我来说,问题是Kubernetes版本1.18,我升级到1.19.1,它工作得很好。
Pod状态
Pod中的错误日志
6ss1mwsb6#
我在Kubernetes集群上工作时遇到了这个问题。
当我在测试Kubernetes集群中将资源从一个节点池迁移到另一个节点池时出现了这个问题。
我忘了我还没有把Nginx ingress和Cert Manager从我想退役的noodpool中迁移出来。因此,在将其他应用程序从我想停用的noodpool中迁移出来后,我删除了noodpool,从而从Kubernetes集群中删除了Nginx ingress和Cert Manager。
我所要做的就是将Nginx ingress和Cert Manager重新部署到新的noodpool中。