大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
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 呼应。
安装与 Sidecar 注入
常见路径:
istioctl install或 Helm chart 安装 Istio- 命名空间标签
istio-injection=enabled自动注入 Sidecar kubectl apply -f上述 CRD
与 mesh-k8s 衔接 Helm、命名空间与资源配额。
排查工具
istioctl proxy-status # Sidecar 是否同步配置
istioctl analyze # 配置冲突提示
istioctl proxy-config routes deploy/course-service-v1
配置不生效时,先查 VirtualService 的 host 是否与 Service 名一致、DestinationRule subset 是否与 Deployment label 对齐。
练习
- 为假想的
user-service写 VirtualService:按路径/api/admin路由到 admin subset - 对照 sc-gateway 路由 YAML,各写一句适用边界
- 运行或阅读
istioctl analyze输出样例(文档即可)
小结
VirtualService 管「去哪」;DestinationRule 管「怎么去、谁算健康 subset」。 下一课把 Istio 放进 K8s 日常运维语境。