CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
服务网格与 SOA/课时/Istio 入门
RawBlame
课时目录12 节

服务网格与 SOA

  1. 01服务网格是什么
  2. 02SOA 与微服务
  3. 03Sidecar 模式
  4. 04流量管理
  5. 05mTLS 与服务身份
  6. 06Istio 入门
  7. 07与 Kubernetes
  8. 08优雅降级
  9. 09弹性与熔断
  10. 10网格与 API 网关
  11. 11运维与可观测性
  12. 12综合练习

Istio 入门

VirtualService、DestinationRule。

35 分钟

Istio 入门

Istio 是最广泛使用的服务网格实现之一:控制面 Istiod 管理配置与证书,数据面 Envoy Sidecar 执行策略。日常运维围绕几类 Kubernetes CRD 展开,其中 VirtualService 与 DestinationRule 最常用。

学习目标

  • 识别 Gateway、VirtualService、DestinationRule、PeerAuthentication 的职责
  • 能读懂金丝雀与 subset 路由示例
  • 知道 istioctl 基本排查命令

核心 CRD 分工

资源作用
Gateway网格入口,绑定负载均衡器端口(类似高级 Ingress)
VirtualServiceL7 路由:匹配 Host/Header/URI,转发到目标 Service
DestinationRule定义 subset(版本标签)、负载均衡、连接池、熔断
ServiceEntry把集群外主机纳入网格管理
PeerAuthenticationmTLS 模式
AuthorizationPolicyL4/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 注入

常见路径:

  1. istioctl install 或 Helm chart 安装 Istio
  2. 命名空间标签 istio-injection=enabled 自动注入 Sidecar
  3. 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 日常运维语境。

加载本节练习…
← 上一课mTLS 与服务身份下一课 →与 Kubernetes