问题描述:

当我使用ingress-demo.yaml文件创建自定义的ingress时
使用命令创建:kubectl apply -f ingress-demo.yaml
报如下错误:

Internal error occurred: failed calling webhook "validate.nginx.ingress.kubernetes.io": Post 
https://ingress-nginx-controller-admission.kube-system.svc:443/networking/v1beta1/ingresses?
timeout=10s: dial tcp 10.0.0.5:8443: connect: connection refused

这里的ingress-demo.yaml文件的内容如下:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-demo
  namespace: test
spec:
  rules:
  - host: test.test.test
    http:
      paths:
      - path: /
        backend:
          serviceName: test-service
          servicePort: 80

原因分析:

我刚开始使用yaml的方式创建nginx-ingress,之后删除了它创建的命名空间以及 clusterrole and clusterrolebinding ,但是没有删除ValidatingWebhookConfiguration ingress-nginx-admission,这个ingress-nginx-admission是在yaml文件中安装的。当我再次使用helm安装nginx-ingress之后,创建自定义的ingress就会报这个错误。


解决方案:

最后参考下面的文章解决此问题

  1. 使用下面的命令查看 webhook
kubectl get validatingwebhookconfigurations
ingress-nginx-admission
  1. 删除ingress-nginx-admission
kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission

参考文章:
https://stackoverflow.com/questions/61616203/nginx-ingress-controller-failed-calling-webhook

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐