服务拓扑
使用服务拓扑实现边缘流量闭环能力
服务拓扑(Service Topology)可以让一个服务根据集群的节点拓扑进行流量路由。 例如,一个服务可以指定流量被优先路由到和客户端 pod 相同的节点或者节点池上。
通过 在原生的 Service 上添加 Annotation 实现流量的拓扑配置,相关参数如下所示:
annotation Key | annotation Value | 说明 |
---|---|---|
openyurt.io/topologyKeys | kubernetes.io/hostname | 流量被路由到相同的节点 |
openyurt.io/topologyKeys | openyurt.io/nodepool 或 kubernetes.io/zone | 流量被路由到相同的节点池 |
下图为服务拓扑功能的一个例子。service-ud1
添加了注解 openyurt.io/topologyKeys: openyurt.io/nodepool
, 当 pod6
访问 service-ud1
的时候,由于 pod6
位于 edge node2
,也就是位于杭州节点池,因此其流量只会发往杭州节点池的 pod1
或 pod2
上,而不会跨节点池,所以 pod3
和 pod4
收不到。从而实现了同一个节点池中的流量闭环。
前提条件
- Kubernetes v1.18或以上版本,因为需要支持 EndpointSlice 资源。
- 集群中部署了 Yurt-app-manager。