【Kubernetes】解决 ingress-srv.yaml 报错 failed calling webhook “validate.nginx.ingress.kubernetes.io“
问题场景在编写 Kubernetes 的 ingress controller 入口控制器的配置文件的时候kubectl apply -f ingress-srv.yaml报了几个错no matches for kind “Ingress” in version “networking.k8s.io/v1beta1”APIVersion 改成 v1 过后,pathType 又不对了超级头痛的 in
问题场景
在编写 Kubernetes 的 ingress controller 入口控制器的配置文件的时候
kubectl apply -f ingress-srv.yaml
报了几个错
-
no matches for kind “Ingress” in version “networking.k8s.io/v1beta1”
-
APIVersion 改成 v1 过后,pathType 又不对了
-
超级头痛的 ingress 内部访问错误👇🏻
Error from server (InternalError): error when creating “ingress-srv.yaml”: Internal error occurred: failed calling webhook “validate.nginx.ingress.kubernetes.io”: Post “https://ingress-nginx-controller-admission.ingress-nginx.svc:443/networking/v1/ingresses?timeout=10s”: dial tcp 10.102.20.133:443: connect: connection refused
解决
no matches for kind “Ingress” in version “networking.k8s.io/v1beta1”
- apiVersion: networking.k8s.io/v1beta1 换成
- apiVersion: networking.k8s.io/v1
APIVersion 改成 v1 过后,pathType 又不对了
是因为版本问题,新版本和旧版本的配置是不一样的
直接上代码
- 下面是老代码
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-srv
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: posts.com
http:
paths:
- path: /posts/create
backend:
serviceName: posts-clusterip-srv
servicePort: 4000
- path: /posts
backend:
serviceName: query-srv
servicePort: 4002
- path: /posts/?(.*)/comments
backend:
serviceName: comments-srv
servicePort: 4001
- path: /?(.*)
backend:
serviceName: client-srv
servicePort: 3000
- 下面是新代码
这两个代码自己比较,主要就是要加个 pathType 以及 name 和 port 要分开
【👉🏻👉🏻👉🏻官网给出的exp】
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-srv
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: posts.com
http:
paths:
- pathType: Prefix
path: "/posts/create"
backend:
service:
name: posts-clusterip-srv
port:
number: 4000
- pathType: Prefix
path: "/posts"
backend:
service:
name: query-srv
port:
number: 4002
- pathType: Prefix
path: "/posts/?(.*)/comments"
backend:
service:
name: comments-srv
port:
number: 4001
- pathType: Prefix
path: "/?(.*)"
backend:
service:
name: client-srv
port:
number: 3000
超级头痛的 ingress 内部访问错误
如果不百度和Google,永远都不知道怎么解决
- 先
kubectl get ValidatingWebhookConfiguration
- 再
kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission
- 把那个该死的 admission 删掉
- 然后就正常了
更多推荐
所有评论(0)