tencent cloud

DestinationRule 配置服务版本和流量策略
最后更新时间:2023-12-26 11:50:28
DestinationRule 配置服务版本和流量策略
最后更新时间: 2023-12-26 11:50:28
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 做一致性哈希负载均衡




本页内容是否解决了您的问题?
您也可以 联系销售 提交工单 以寻求帮助。

文档反馈