Istio – Destination Rule讲解

Istio 的 DestinationRule 用于定义对服务调用的策略。以下是 DestinationRule 的主要功能:

  1. 负载均衡(Load Balancing)
    • 轮询(ROUND_ROBIN): 轮流将请求分配给每个后端实例。
    • 最少请求数(LEAST_CONN): 将请求分配给连接数最少的实例。
    • 随机(RANDOM): 随机将请求分配给后端实例。
    • 哈希(HASH): 基于某些特征(如请求头、请求路径等)将请求分配给特定实例。
  2. 连接池(Connection Pooling)
    • 限制连接的数量和超时时间。
  3. 断路器(Circuit Breaker)
    • 设置对某服务实例的最大连接数和失败请求数,以防止服务过载。
  4. TLS 设置
    • 配置服务间通信的 TLS 加密。
YAML
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: example-destination-rule
  namespace: default
spec:
  host: my-service.default.svc.cluster.local  # 指定服务
  trafficPolicy:  # 定义流量策略
    loadBalancer:  # 负载均衡设置
      simple: LEAST_CONN  # 使用最少连接数的负载均衡策略
    connectionPool:  # 连接池设置
      tcp:
        maxConnections: 100  # 最大TCP连接数
        connectTimeout: 30ms  # 连接超时时间
      http:
        http1MaxPendingRequests: 1000  # 最大待处理的HTTP/1请求数
        maxRequestsPerConnection: 10  # 每个连接的最大请求数
        idleTimeout: 1m  # 空闲连接的超时时间
    outlierDetection:  # 断路器设置
      consecutiveErrors: 5  # 连续失败请求数
      interval: 5s  # 检测间隔
      baseEjectionTime: 30s  # 实例弹出时间
      maxEjectionPercent: 50  # 最大弹出实例的百分比
    tls:  # TLS设置
      mode: ISTIO_MUTUAL  # 使用Istio双向TLS
YAML

Loading

Facebook评论