Kubernetes 入口类的入口控制器名称
我正在设置入口控制器、入口类和入口,以在集群外部公开服务。这是最新的群集设置 我已使用Kubernetes 入口类的入口控制器名称,kubernetes,kubernetes-ingress,Kubernetes,Kubernetes Ingress,我正在设置入口控制器、入口类和入口,以在集群外部公开服务。这是最新的群集设置 我已使用 kubectl应用-fhttps://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.41.0/deploy/static/provider/baremetal/deploy.yaml 根据我的理解,下一步是创建ingress类 他们是如何获得控制器的名称的example.com/ingres controller?您将创建in
kubectl应用-fhttps://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.41.0/deploy/static/provider/baremetal/deploy.yaml
根据我的理解,下一步是创建ingress类
他们是如何获得控制器的名称的
example.com/ingres controller
?您将创建ingresclass
,作为安装清单的一部分(步骤3)。这将创建一个如下所示的IngressClass
:
apiVersion:networking.k8s.io/v1beta1
种类:安格拉斯
元数据:
姓名:nginx
#注释:
#ingressclass.kubernetes.io/is-default-class:“true”
规格:
控制器:nginx.org/ingres-controller
然后,要配置要由nginx
使用的ingres
资源,只需在ingres
规范中指定ingresclassname:nginx
,如图所示,然后再次粘贴到下面:
apiVersion:networking.k8s.io/v1beta1
种类:入口
元数据:
名称:安格尔咖啡馆
规格:
名称:nginx
tls:
-主持人:
-cafe.example.com
秘密名称:咖啡馆秘密
规则:
-主持人:cafe.example.com
. . .
我使用
IngressClass
、Ingress
和Nginx Ingress Controller
运行了多个场景
情景1
- 具有自定义名称的入口类
- Nginx入口控制器,具有默认值
——入口类
值,该值为
Nginx
- 使用与IngressClass名称相同的IngressClass名称的入口
- 具有自定义名称的入口类
- 具有自己的
入口测试入口类的Nginx入口控制器
- 使用与IngressClass名称相同的IngressClass名称的入口
- 带有
name的入口类test
- Nginx入口控制器
--入口类
带值
测试
- 在ingressClassName中使用
测试
- 带有
名称的入口类nginx
- Nginx入口控制器
--入口类
带值
Nginx
- 使用ingressClassName中的
进入nginx
Nginx
<代码>开源Nginx入口控制器,您可能正在使用它Nginx Incorporaton
(Nginx inc)和Nginx Incorporaton Plus
在其中一个场景中,当我将spec.controller:nginx.org/ingres controller
与nginx-ingres-controller
一起使用参数--ingres class=nginx
,在nginx-ingres-controller
中,您将看到指向k8s.io/ingres-nginx
的条目
要重现此行为,您需要使用特定控制器部署ingresclass
,然后部署nginx
apiVersion: networking.k8s.io/v1beta1
kind: IngressClass
metadata:
name: nginx
spec:
controller: nginx.org/ingress-controller
部署Nginx入口控制器
后,控制器吊舱将处于CrashLoopBackOff
状态。在日志中,您可以找到以下条目:
E1118 15:42:19.008911 8 main.go:134] Invalid IngressClass (Spec.Controller) value "nginx.org/ingress-controller". Should be "k8s.io/ingress-nginx"
仅当IngressClass
name设置为nginx
我想说,nginx.org/ingres controller
是针对nginx Incorporated
的,k8s.io/ingres nginx
是针对开源nginx ingres
的
如果自定义值用于控制器部署清单
中的--入口类
参数,则存在或不存在具有相同名称的入口类
对象不会对集群的工作方式产生任何影响,只要将入口规范.ingresclass
值与控制器参数保持相同即可。此外,如果存在,IngressClassspec.controller
可以具有与所需模式“类似域”匹配的任何值,并且根本不会影响集群上的Ingress
工作流行为
此外,ingres
如果我将ingres类的正确值相应地放入spec.ingresclass
属性或metadata.annotation.kubernetes.io/ingres.class
中,则可以正常工作。如果您试图将两个值放在同一个Ingres对象上,则会出现如下错误:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
ingressClassName: nginx
入口“测试入口”无效:annotations.kubernetes.io/ingres.class:无效值:“nginx”:在同时设置class字段时无法设置
请记住,它只测试了一次。如果您想将IngressClass
与其他Ingress控制器一起使用,您可以查看他们的发行说明。您能否澄清您想要实现的具体目标?您有两个入口控制器,如Nginx Ingress和GCE Ingress,您想强制此特定入口使用其中一个,或者您想创建一个新入口?新入口,freah Cluster您从哪里获得Nginx.org/Ingress控制器?这是在其安装配置中预定义的。他们的控制器将查找具有该名称的入口类
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
ingressClassName: nginx