k3s网络请求测试
Traefik 提供了两种 Kubernetes Ingress 控制器配置方式,主要区别如下:
1、Traefik Ingress (原生 Kubernetes Ingress)
- 标准兼容:使用标准的 Kubernetes Ingress API
- 简单场景:适合基础路由需求
- 功能有限:只支持标准 Ingress 功能
apiVersion: networking.k8s.io/v1
kind: Ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
2、IngressRoute (Traefik CRD)
- 增强功能:自定义资源定义,提供 Traefik 特有功能
- 高级特性:支持中间件、负载均衡策略、流量拆分、金丝雀发布等
- 更灵活:更细粒度的路由控制
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: nginx-test-ingressroute
spec:
# 入口点:web = 80端口,websecure = 443端口
entryPoints:
- web
# 路由规则
routes:
- match: Host(`nginx.oa.com`)
kind: Rule
services:
- name: nginx-test-svc
port: 80
区别主要如下:
| 功能 | 原生 Ingress | IngressRoute (Traefik) |
|---|---|---|
| HTTP 路由 | ✅ | ✅ |
| HTTPS | ✅ | ✅ |
| 限流 | ❌ | ✅ |
| 重试 | ❌ | ✅ |
| 重定向 | ❌ | ✅ |
| 请求头修改 | ❌ | ✅ |
| WebSocket | ❌ | ✅ |
| gRPC | ❌ | ✅ |
| TCP 转发 | ❌ | ✅ |
| 流量复制 | ❌ | ✅ |
本例子中使用ingressRoute
3、先创建一个nginx-pod,如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-test
namespace: default
spec:
replicas: 2 # 2 副本
selector:
matchLabels:
app: nginx-test
template:
metadata:
labels:
app: nginx-test
spec:
containers:
- name: nginx
image: registry.ywdevops.cn/nginx:latest
ports:
- containerPort: 80
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 50m
memory: 64Mi
4、在创建一个绑定此pod的nginx-service,如下:
apiVersion: v1
kind: Service
metadata:
name: nginx-test-svc
namespace: default
spec:
type: ClusterIP
selector:
app: nginx-test
ports:
- name: http
port: 80
targetPort: 80
5、最后创建IngressRoute,如下:
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: nginx-test-ingressroute
spec:
# 入口点:web = 80端口,websecure = 443端口
entryPoints:
- web #如果是443端口这里就改为websecure
# 路由规则
routes:
- match: Host(`nginx.oa.com`) #域名是nginx.oa.com
kind: Rule
services:
- name: nginx-test-svc
port: 80
6、将域名解析到VIP(192.168.51.72)上,然后访问,如图:



