Istio 入门
VirtualService、DestinationRule。
35 分钟
Istio 入门
Istio 是最广泛使用的服务网格实现之一:控制面 Istiod 管理配置与证书,数据面 Envoy Sidecar 执行策略。日常运维围绕几类 Kubernetes CRD 展开,其中 VirtualService 与 DestinationRule 最常用。
学习目标
- 识别 Gateway、VirtualService、DestinationRule、PeerAuthentication 的职责
- 能读懂金丝雀与 subset 路由示例
- 知道
istioctl基本排查命令
核心 CRD 分工
| 资源 | 作用 |
|---|---|
| Gateway | 网格入口,绑定负载均衡器端口(类似高级 Ingress) |
| VirtualService | L7 路由:匹配 Host/Header/URI,转发到目标 Service |
| DestinationRule | 定义 subset(版本标签)、负载均衡、连接池、熔断 |
| ServiceEntry | 把集群外主机纳入网格管理 |
| PeerAuthentication | mTLS 模式 |
| AuthorizationPolicy | L4/L7 授权 |
依赖 Kubernetes 的 Service / Deployment 作为工作负载载体。
VirtualService 示例
把带 x-canary: true 的请求打到 v2:
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: course-service
spec:
hosts:
- course-service
http:
- match:
- headers:
x-canary:
exact: "true"
route:
- destination:
host: course-service
subset: v2
- route:
- destination:
host: course-service
subset: v1
DestinationRule 与 subset
先定义 subset(通常按 Pod label version):
apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
name: course-service
spec:
host: course-service
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
trafficPolicy:
connectionPool:
tcp:
maxConnections: 100
outlierDetection:
consecutive5xxErrors: 5
interval: 30s
baseEjectionTime: 30s
outlierDetection 即网格层 异常实例摘除,与 mesh-resilience 呼应。