我在Ubuntu虚拟机上使用kubeadm(v1.18)设置了一个k8s集群。
现在,我需要添加一个Ingress Controller 。我决定使用nginx(但是我愿意接受其他解决方案)。我根据docs的“裸机”部分安装了它:kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-0.31.1/deploy/static/provider/baremetal/deploy.yaml
安装对我来说似乎很好:kubectl get all -n ingress-nginx
NAME READY STATUS RESTARTS AGE
pod/ingress-nginx-admission-create-b8smg 0/1 Completed 0 8m21s
pod/ingress-nginx-admission-patch-6nbjb 0/1 Completed 1 8m21s
pod/ingress-nginx-controller-78f6c57f64-m89n8 1/1 Running 0 8m31s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/ingress-nginx-controller NodePort 10.107.152.204 <none> 80:32367/TCP,443:31480/TCP 8m31s
service/ingress-nginx-controller-admission ClusterIP 10.110.191.169 <none> 443/TCP 8m31s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/ingress-nginx-controller 1/1 1 1 8m31s
NAME DESIRED CURRENT READY AGE
replicaset.apps/ingress-nginx-controller-78f6c57f64 1 1 1 8m31s
NAME COMPLETIONS DURATION AGE
job.batch/ingress-nginx-admission-create 1/1 2s 8m31s
job.batch/ingress-nginx-admission-patch 1/1 3s 8m31s
但是,当尝试应用自定义Ingress时,出现以下错误:
Error from server (InternalError): error when creating "yaml/xxx/xxx-ingress.yaml": Internal error occurred: failed calling webhook "validate.nginx.ingress.kubernetes.io": Post https://ingress-nginx-controller-admission.ingress-nginx.svc:443/extensions/v1beta1/ingresses?timeout=30s: Temporary Redirect
知道有什么问题吗?
我怀疑有DNS,但其他NodePort服务正在按预期方式工作,并且DNS在群集中正常工作。
我只能看到的是,我没有docs here中提到的default-http-backend。但是,根据this thread,这对我而言似乎很正常。
最后但并非最不重要的一点是,我也尝试了installation with manifests(从先前的安装中删除了ingress-nginx namespace 之后)和installation via Helm chart。结果相同。
我几乎是k8s的初学者,这是我的游乐场。因此,我也愿意接受其他解决方案,只要我不需要从头开始设置整个集群即可。
更新:
“应用自定义Ingress”是指:
kubectl apply -f <myIngress.yaml>
myIngress.yaml的内容
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /someroute/fittingmyneeds
pathType: Prefix
backend:
serviceName: some-service
servicePort: 5000
最佳答案
您还有另一个选择是完全删除Validating Webhook:kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission
我发现我必须在another issue上执行此操作,但是解决方法/解决方案在这里也适用。
这不是最好的答案。最好的答案是弄清楚为什么它不起作用。但是在某些时候,您可以使用变通方法。
我正在Mac的Docker上安装,所以我使用了cloud
而不是baremetal
版本:kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.34.1/deploy/static/provider/cloud/deploy.yaml
关于kubernetes - Nginx入口 Controller -调用Webhook失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61616203/