您当前所在位置: 主页 > 新闻动态 > 领导活动

Kubernetes--服务拓扑(Service Topology)

发布时间:2024-04-22 14:50|栏目: 领导活动 |浏览次数:
一、服务拓扑
? 服务拓扑机制从Kubernetes1.17版本开始引入,目标是实现基于Node拓扑的流量路由,例如将发送到某个服务的流量优先路由到与客户端相同Node的Endpoint上,或者路由到与客户端相同的Zone的那些Node的Endpoint上。
? ? 在默认情况下,发送到一个Service的流量会被均匀的转发到每个后端Endpoint上,但无法根据复杂的拓扑信息设置复杂的路由策略。服务拓扑机制的引入就是为了实现基于Node拓扑的服务器路由,允许Service创建者根据来源Node和目标Node的标签来定义流量路由策略
? ? 通过对来源(Source) Node和目标(destination)Node标签的匹配,用户可以根据业务需求对Node进行分组,设置有意义的的指标值来标识“较近”或者“较远”的属性。例如:对于公有云环境,通常有区域(Zone或Region)的划分,云平台倾向于把服务的流量限制在同一个区域内,这通常是因为跨区域网络流量会收取额外的费用。另外一个例子,把流量路由到由DaemonSet管理的当前Node的Pod上。又如希望把流量保持在相同机架的Node上,已获得更低的网络延时。
? ? 服务拓扑机制需要通过设置kube-apiserver和kube-proxy服务启动参数--feature-gates="ServiceTopology=true,EndpointSilce=true"进行启用(需要同时启动EndpointSlice功能),然后可以在Service对象上通过定义topologyKeys字段来控制到Service的流量路由了。
? ?topologyKeys字段设置的是一组Node标签列表,按顺序匹配Node完成流量的路由转发,流量会被转发到标签匹配成功的Node上。如果按第1个标签找不到匹配的Node,就尝试匹配第2个标签,以此类推。如果全部的标签都没有匹配到Node,则请求会被拒绝,就像Service没有后端Endpoint一样。
? 将topologyKey配置为“*”标识任意拓扑,它只能作为配置列表中的最后一个才能有效。如果不设置topologyKeys字段,或者将其值设置为空,相当于没有启动服务拓扑功能。
? 对于要使用服务拓扑的集群,管理员需要为Node设置相应的拓扑标签,包括?kubernetes.io/hostnamekubernetes.io/zonekubernetes.io/region
topologyKeys路由策略
["kubernetes.io/hostname"]流量只会被路由到相同Node的Endpoint上,如果Node上的Endpoint不存在,则将请求丢弃
["kubernetes.io/hostname""kubernetes.io/zone""kubernetes.io/rgion"]流量会优先路由到相同Node的Endpoint上,如果Node上没有Endpoint,流量则被路由到同zone的Endpoint上,如果zone中没有endpoint,流量则被路由到region中的Endpoint上
["kubernetes.io/zone"“*”]流量优先被路由到同zone的Endpoint上,如果zone中没有Endpoint,流量则被路由到任意可用的Endpoint上

二、服务拓扑条件约束

  1. 服务拓扑 和externalTrafficPolicy=Local(流量只转给本机的Pod)不兼容,所以Service不能同时使用者两个特性。在同一个集群中,启动服务拓扑的Service和设置externalTrafficPolicy=Local特性的Service可以同时存在、
  2. topologykeys目前只支持设置三个值"kubernetes.io/hostname"、"kubernetes.io/zone"和"kubernetes.io/region"
  3. topologykeys必须是有效的标签格式,并且最多定义16个。
  4. 如需使用通配符"*",则它必须是最后一个值

三、例子

(1)只将流量路由到相同Node的Endpoint上,如果Node没有任何可用的Endpoint,则强求被丢弃

 
 

(2)优先将流量路由到相同Node的Endpoint上,如果Node没有可用的Endpoint则将请求路由到任意可用的Endpoint:

 
 

(3)只将流量路由到相同的Zone或同region的Endpoint上,如果没有可用的Endpoint,则将请求丢弃:

 
 

(4)按同Node、同zone、同region的优先级顺序路由流量,如果Node、zone、region都没有可用的Endpoint,则将请求路由到集群内任意可用的Endpoint

 
 

Copyright © 2002-2021 九游会官方新闻发布中心 版权所有 Powered by EyouCms
电话:020-88888888 地址:广东省广州市番禺经济开发区 备案号:额ICP备31231234号
网站地图 

平台注册入口