【发布时间】:2020-08-20 07:04:03
【问题描述】:
我在 Ubuntu 虚拟机上使用 kubeadm (v1.18) 建立了一个 k8s 集群。 现在我需要添加一个入口控制器。我决定使用 nginx(但我对其他解决方案持开放态度)。我是按照docs,“bare-metal”部分安装的:
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 中提到的默认http 后端。但是,根据this thread,在我的情况下这似乎很正常。
最后但并非最不重要的一点是,我也尝试了installation with manifests(在从之前的安装中删除了 ingress-nginx 命名空间之后)和installation via Helm chart。结果是一样的。
我几乎是 k8s 的初学者,这是我的游乐场集群。所以我也愿意接受替代解决方案,只要我不需要从头开始设置整个集群。
更新:
对于“应用自定义入口”,我的意思是:
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
【问题讨论】:
-
when trying to apply a custom Ingress是什么意思?您的自定义 Ingress 到底是什么? -
@OhHiMark:我的意思是`kubectl apply -f
。我在原帖中添加了信息。 -
看起来您的 Ingress.yaml 配置错误。我看到您正在尝试使用重写注释,但没有定义捕获组。 Here 您将找到一个说明如何使用该注释的示例。请看一下,如果有帮助,请告诉我。
-
不删除ValidatingWebhookConfiguration的任何解决方案?
标签: kubernetes kubernetes-ingress nginx-ingress kubeadm