Kubernetes Ingress资源可以使用不同的策略来实现请求转发。这里列出一些常见的Ingress转发策略:
- Path-Based Routing:根据请求URL路径进行路由,可使用nginx ingress或traefik ingress实现
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /v1
backend:
serviceName: service-v1
servicePort: 80
- path: /v2
backend:
serviceName: service-v2
servicePort: 80
- Host-Based Routing:根据请求的主机名(host)进行路由,可使用nginx ingress或traefik ingress实现
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: foo.bar.com
http:
paths:
- path: /path/to/service
backend:
serviceName: my-service
servicePort : my-service-port
- TCP/UDP routing:将TCP/UDP流量路由到特定服务的端口,通过MetalLB等负载均衡器实现
apiVersion : v1
kind : Service
metadata :
name : mysql-svc
labels :
app : mysql-db
spec :
ports :
- port : 3306
targetPort : mysql
selector :
app : mysql-db
---
apiVersion : networking.k8s.io/v1beta1
kind : Ingress
metadata :
name : mysql-ingress
spec :
rules:
- host: mysql.example.com
http:
paths:
- path: /
backend:
serviceName: mysql-svc
servicePort: 3306
- Fanout:将请求路由到多个服务,可使用traefik ingress实现
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: fanout-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /serviceA/*
backend:
serviceName: service-a
servicePort: 80
- path: /serviceB/*
backend:
serviceName: service-b
servicePort: 80
需要根据实际需求选择合适的Ingress转发策略。




