Skip to content

参考:Istio CRD 速查与命令清单

基于 Istio 1.22(含 Ambient GA)· 核于 2026-08

速查

  • Istio 定义:CNCF 服务网格平台,Sidecar(Envoy)把流量管理/安全/可观测性从应用剥离,语言无关。
  • 架构:数据面(Envoy Sidecar,拦截流量执行治理)+ 控制面(istiod,服务发现/配置转换/证书签发)。
  • 三大能力:流量管理(VirtualService+DestinationRule)、安全(mTLS+AuthorizationPolicy)、可观测性(Prometheus+Jaeger+Kiali,开箱即用)。
  • 核心 CRD:VirtualService(路由)、DestinationRule(subset/熔断/LB)、Gateway(入口)、ServiceEntry(外部服务)、PeerAuthentication(mTLS 模式)、AuthorizationPolicy(授权)、RequestAuthentication(JWT)。
  • Ambient 模式 GA(1.22+):去 Sidecar,ztunnel(节点级 L4 mTLS)+ waypoint(按需 L7),降资源开销。
  • vs Spring Cloud:Sidecar 外挂(语言无关)vs SDK 内嵌(绑 Java)。
  • vs Linkerd:Envoy 功能全重型 vs Rust 代理轻量易用。

一、核心 CRD 速查

CRD作用关键字段
VirtualService定义请求如何路由hosts、http.match(匹配)、route.destination(host/subset/weight)、timeout、retries
DestinationRule目标策略host、subsets(版本分组)、trafficPolicy(loadBalancer/connectionPool/outlierDetection)
Gateway入口网关selector、servers(port/protocol/hosts)
ServiceEntry外部服务纳入网格hosts、location(MESH_EXTERNAL)、ports
PeerAuthenticationmTLS 模式mtls.mode(PERMISSIVE/STRICT)
AuthorizationPolicy授权(谁能调谁)action(ALLOW/DENY)、rules.from/to/when
RequestAuthenticationJWT 校验jwtRules(issuer/jwksUri/audiences)
Sidecar定制 Sidecar 配置workloadSelector、ingress/egress

二、流量模型:VirtualService + DestinationRule

   请求进入 Sidecar


   VirtualService 匹配(hosts + match)
        │  按规则路由到 destination(host + subset + weight)

   DestinationRule 策略
        │  - subset:选哪个版本(v1/v2,按 Pod label)
        │  - loadBalancer:负载均衡算法(ROUND_ROBIN/LEAST_REQUEST/...)
        │  - outlierDetection:摘除异常实例(被动熔断)
        │  - connectionPool:连接池限制

   Envoy 转发请求到目标实例
  • VirtualService 决定「去哪」DestinationRule 决定「怎么去」(选哪个实例、什么 LB、要不要熔断)。
  • subset 是两者的桥梁:DestinationRule 定义 subset(按 label 分组),VirtualService 的 destination.subset 引用它。

三、安全模型速查

CRD作用
身份(mTLS)PeerAuthentication服务间双向证书认证,SPIFFE 身份,PERMISSIVE/STRICT 模式
认证(JWT)RequestAuthentication校验外部客户端 JWT(签名/issuer/audience)
授权AuthorizationPolicy控制谁能调谁,ALLOW/DENY,基于身份/命名空间/方法/路径
  • 默认安全:mTLS PERMISSIVE 默认开(迁迁移),AuthorizationPolicy 默认全部拒绝(白名单)。
  • 零信任:所有通信 mTLS 加密 + 授权,永不默认信任。

四、Sidecar vs Ambient 模式

维度Sidecar(传统)Ambient(1.22 GA,未来方向)
部署每 Pod 一个 Envoy节点级 ztunnel + 按需 waypoint
L4 mTLSSidecar 做ztunnel 做(共享,省资源)
L7 治理Sidecar 做(全功能)waypoint 做(按需)
资源开销重(每 Pod 一个 Envoy)轻(共享 ztunnel + 按需 waypoint)
成熟度成熟,主流1.22 GA,逐步推广

五、常用 istioctl 命令

bash
# —— 安装与注入 ——
istioctl install --set profile=demo          # 安装 Istio(demo profile)
istioctl install --set profile=production    # 生产 profile
kubectl label namespace default istio-injection=enabled   # 命名空间启用 Sidecar 自动注入

# —— Ambient 模式(1.22+)——
istioctl install --set profile=ambient       # 安装 Ambient 模式
kubectl label namespace default istio.io/dataplane-mode=ambient  # 启用 Ambient

# —— 诊断 ——
istioctl analyze                              # 校验所有 Istio 配置(找配置错误)
istioctl version                              # 版本
istioctl proxy-status                         # 所有 Sidecar 配置同步状态
istioctl proxy-config route <pod>            # 看某 Pod 的路由配置
istioctl proxy-config cluster <pod>          # 看集群配置(upstream)
istioctl proxy-config listener <pod>         # 看监听器
istioctl describe svc <service>              # 服务的 Istio 配置摘要

# —— 流量调试 ——
istioctl experimental describe pod <pod>     # Pod 的 Sidecar 配置详情
kubectl get virtualservice,destinationrule,gateway -A   # 列所有流量配置

# —— 卸载 ——
istioctl x uninstall --purge                 # 卸载 Istio

六、易错点清单

  • 「Istio 是注册中心」:错。Istio 是服务网格(流量/安全/观测),不做服务注册——它复用 K8s 的 Service/Endpoint 做服务发现。
  • 「Sidecar 没有资源开销」:错。每 Pod 一个 Envoy,内存(几十 MB)+ CPU 开销可观,大集群要评估。Ambient 模式缓解。
  • 「VirtualService 的 subset 不需要 DestinationRule」:错。subset 必须在 DestinationRule 中定义(按 Pod label 分组),VirtualService 只引用 subset 名。
  • 「mTLS 默认 STRICT」:错。默认 PERMISSIVE(加密明文都接受,便于迁移)。生产应改 STRICT。
  • 「Istio 治理逻辑在应用代码里」:错。治理在 Sidecar(Envoy),应用零改造,这是服务网格的核心价值。
  • 「Istio 只支持 Java」:错。Sidecar 语言无关,Java/Go/Python/Node 都能接入(这是它相对 Spring Cloud 的优势)。
  • 「金丝雀靠 K8s Deployment 滚动更新就够了」:不充分。K8s 滚动更新是「替换实例」(新旧共存但流量按 ready 实例随机分),无法精确控制权重;Istio VirtualService 的 weight 才能精确按百分比分流量。
  • 「Ambient 模式完全替代 Sidecar」:尚不是。1.22 GA 后两者共存,可逐命名空间迁移,Sidecar 仍支持(部分高级特性仍需 Sidecar)。
  • 「重试随便配无害」:错。非幂等接口(如下单)重试可能导致重复操作,要结合幂等性设计。retryOn 也要精准(如只重试 5xx、connect-failure,不重试 4xx)。
  • 「istiod 处理业务流量」:错。istiod 是控制面(下指令),不接触业务流量;业务流量全在数据面 Envoy 之间。

七、进阶方向(链接其他叶)

  • Consul —— Consul Connect 是轻量 mesh,Istio 是重量级 mesh,对比
  • Nacos —— Istio 可对接 Nacos 做服务发现(非 K8s 场景)
  • Etcd —— K8s 底座,Istio 运行在 K8s 之上(依赖 etcd 存的状态)

权威链接