Ingress Class
Ingress Class是v1版本中引入的新概念,用于区分不同类型的Ingress控制器。Ingress Class通过ingressClassName字段指定,其值为用户定义的字符串。在v1beta1中,没有Ingress Class的概念,因此没有相关的字段。
以下是一个使用Ingress Class的v1版本的示例配置:
代码语言:javascript复制apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
ingressClassName: nginx
rules:
- host: example.com
http:
paths:
- path: /example
pathType: Prefix
backend:
service:
name: example-service
port:
number: 80在上面的配置中,ingressClassName字段指定了该Ingress所使用的Ingress Class的名称,而annotations字段中的kubernetes.io/ingress.class注解也可以用来指定Ingress Class。
路由规则
Ingress的路由规则用于将请求映射到对应的后端服务上。在v1beta1中,路由规则如下:
代码语言:javascript复制apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /example
backend:
serviceName: example-service
servicePort: 80在v1中,路由规则变成了这样:
代码语言:javascript复制apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /example
pathType: Prefix
backend:
service:
name: example-service
port:
number: 80注意到在v1中,backend字段变成了service字段,而且servicePort变成了port.number。此外,pathType字段的加入,使得可以更灵活地定义请求的匹配方式。
TCP和UDP支持
在v1版本中,新增了TCP和UDP协议的支持。可以使用如下的配置为TCP或UDP服务创建Ingress规则:
代码语言:javascript复制apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-tcp-ingress
spec:
rules:
- host: example.com
tcp:
- port: 1234
backend:
service:
name: example-tcp-service
port:
number: 5678在上面的配置中,tcp字段指定了要暴露的TCP端口号,以及将该端口号映射到哪个后端服务上。


