有奖捉虫:行业应用 & 管理与支持文档专题 HOT
文档中心 > 服务网格 > 操作指南 > 流量管理 > DestinationRule 配置服务版本和流量策略
DestinationRule 定义服务的版本和路由发生后的流量策略,包括负载均衡、连接池大小、健康检查(从负载均衡后端中剔除不健康的 hosts)等流量策略。服务与 DestinationRule 是一对一的绑定关系。

DestinationRule 重要字段说明

以下是 DestinationRule 的重要字段说明:
字段名称
字段类型
字段说明
spec.host
string
关联 DestinationRule 配置的服务名称,可以是自动发现的服务(例如 Kubernetes service name),或通过 ServiceEntry 声明的 hosts。如填写的服务名无法在上述源中找到,则该 DestinationRule 中定义的规则无效。
spec.subsets
Subset[]
定义服务的版本(subsets),版本可通过标签键值对匹配服务中的 endpoints。可以在 subsets 级覆盖流量策略配置。
spec.trafficPolicy
trafficPolicy
定义流量策略,包括负载均衡、连接池、健康检查、TLS 策略。
spec.trafficPolicy.loadBalancer
-
配置负载均衡算法,可配置:简单负载均衡算法(round robin, least conn, random...),一致性哈希(会话保持,支持按 header name,cookie,IP,query parameter 哈希),地域感知负载均衡算法。
spec.trafficPolicy.connectionPool
-
配置与上游服务的连接量,可设置 TCP/HTTP 的连接池。
spec.trafficPolicy.outlierDetection
-
配置从负载均衡池中驱逐不健康的 hosts。
spec.trafficPolicy.tls
-
连接上游服务的 client 端 TLS 相关配置,与 PeerAuthentication 策略(server 端 TLS 模式配置)配合使用。
spec.trafficPolicy.portLevelSettings
-
配置端口级别的流量策略,端口级别的流量策略会覆盖服务 / subsets 级别的流量策略配置。

定义服务的版本(subsets)

DestinationRule 可定义服务的版本(subsets),而 subset 则是腾讯云服务网格的最小流量管理单元。例如,您可以配置将流量路由至某个指定服务的指定 subset。以下是 DestinationRule 定义 product 服务两个 subset 的配置示例。
YAML 配置示例
控制台配置示例
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: product
namespace: base
spec:
host: product
subsets:
- name: v1
labels:
version: v1 # subset v1 通过标签 version:v1 来匹配该服务的endpoint
- name: v2
labels:
version: v2 # subset v2 通过标签 version:v2 来匹配该服务的endpoint
DestinationRule 和服务是一一对应的绑定关系,配置 product 服务的 DestinationRule,需要从服务列表页进入 product 服务的详情页,在基本信息 Tab 配置。控制台配置 product 服务两个版本的步骤如下:
1. 在服务列表页面,单击进入 product 服务的详情页面。
?
?
2. 在服务详情页基本信息,第三个 DestinationRule card 区域,单击新建 DestinationRule 进入新建弹窗。
?
?
3. 在弹窗页面为 product 服务添加两个版本,点击保存。
?
?
4. product 服务版本配置完成。
?
?

配置一致性哈希负载均衡

以下是用 DestinationRule 配置 cart 服务按照 http header name 做一致性哈希负载均衡的配置示例。
YAML 配置示例
控制台配置示例
kind: DestinationRule
metadata:
name: cart
namespace: base
spec:
host: cart
trafficPolicy:
loadBalancer:
consistentHash:
httpHeaderName: UserID # 配置访问 cart 服务的流量按照 header UserID 做一致性哈希负载均衡
?
?
?
?
http://www.vxiaotou.com