上云无忧 > 文档中心 > 天翼云边缘容器集群(ECK专有版) - 为边缘应用配置Service流量拓扑
边缘容器集群(ECK专有版)
天翼云边缘容器集群(ECK专有版) - 为边缘应用配置Service流量拓扑

文档简介:
本文为您介绍Service流量拓扑管理功能和配置Service流量拓扑方法。 在原生Kubernetes集群中,Service的后端端点扁平分布在集群中任意节点,节点之间IP可达。在云边协同版集群架构下,边缘节点分散在不同网络区域,Service后端端点可能会分散在网络隔离的节点分组上。因此,跨越不同分组节点的Service流量,会大概率出现访问不可达、或者访问效率低下的问题。
*产品来源:中国电信天翼云。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

本文为您介绍Service流量拓扑管理功能和配置Service流量拓扑方法。

在原生Kubernetes集群中,Service的后端端点扁平分布在集群中任意节点,节点之间IP可达。在云边协同版集群架构下,边缘节点分散在不同网络区域,Service后端端点可能会分散在网络隔离的节点分组上。因此,跨越不同分组节点的Service流量,会大概率出现访问不可达、或者访问效率低下的问题。

Service流量拓扑支持边缘节点应用只能由相同节点池的节点访问,或者只能由本节点访问。本文为您介绍Service流量拓扑管理功能和配置Service流量拓扑方法。

背景信息

在边缘计算场景下,边缘节点通常具备很强的区域性、地域性、或者其他逻辑上的分组特性(比如具有相同的CPU架构、运营商或云提供商),不同分组的节点间往往存在网络不互通、资源不共享、资源异构、应用独立等明显的隔离属性。

Service流量拓扑实现原理

为了解决上述问题,ECK云边协同版在原生的Service之上,增加了Service流量拓扑管理功能,即通过简单配置来限制Service后端Endpoint的访问范围,使边缘节点应用只能由相同节点池的节点访问,或者只能由本节点访问。具体实现原理如下图所示。

  • Service关联后端两个实例(Pod2,Pod4),且Service通过 annotation:"openyurt.io/topologyKeys: kubernetes.io/nodepool" 配置了其拓扑节点池范围。
  • Pod2和Pod4分别属于两个不同的节点池guangzhou和节点池shenzhen。
  • 因为Pod1和Pod4不在一个节点池,当Pod1访问Service时,流量只会转发到Pod2上,访问Pod4的流量被限制。

实现细节:

  • kube-proxy list/watch EndpointSlices。
  • 请求经过本地yurt-hub代理组件访问集群APIServer。
  • yurt-hub接收到响应后,基于Service中的openyurt.io/topologyKeys配置,修改响应,过滤其他节点池的endpoint,只保本地节点池的endpoint。
  • kube-proxy 收到的响应中只包含本地节点池endpoint,配置service转发规则。 因此转发规则不会跨节点池。

注意事项

创建Service时,需要同步配置Service的流量拓扑注解,流量拓扑功能才能生效。如果Service创建完成后,再增加注解配置,流量拓扑功能无法生效,此时需要删除该Service,重新创建。

方式一:通过控制台配置Service拓扑

若您需要创建一个限制在本节点池内被访问的Service,只需给Service添加注解即可。例如将名称配置为openyurt.io/topologyKeys,值配置为openyurt.io/nodepool。

方式二:通过命令行配置Service拓扑

新建一个使用节点池拓扑的Service,YAML样例如下。

apiVersion: v1
kind: Service
metadata:
  name: test-service-topology
  namespace: default
  annotations:
    openyurt.io/topologyKeys: openyurt.io/nodepool
spec:
  ports:
    - name: test
      port: 8088
      targetPort: 8088
      protocol: TCP
  type: ClusterIP复制

注解说明

通过在原生的Service上添加Annotation实现流量的拓扑配置,相关参数如下所示。

annotation Key annotation Value 说明
openyurt.io/topologyKeys kubernetes.io/hostname 限制Service只能被本节点访问。
openyurt.io/topologyKeys openyurt.io/nodepool 限制Service只能被本节点池的节点访问。
- - Service不做任何拓扑限制。
相似文档
  • 介绍如何为边缘应用配置SLB负载均衡。 在标准版和云边协同版集群中,均支持通过设置服务(Service)的 spec.type=LoadBalancer,来配置负载均衡器暴露应用。 在云边协同版集群中,边缘节点池的节点和云端节点存在跨地域,跨VPC的可能。在云边协同版中,会默认为 LoadBalancer类型 Service在云端创建SLB负载均衡器,当云边节点跨VPC时,这种负载均衡器将无法服务于边缘应用。
  • 介绍如何为边缘节点池上的应用提供负载均衡能力。 基于ECK云边协同版本提供的边缘负载均衡能力,您可以通过在边缘节点池部署Nginx Ingress Controller,为边缘节点池上的应用提供负载均衡能力。
  • 介绍如何创建配置项。 1. 登录边缘容器集群控制台。 2. 在控制台左侧导航栏中,单击集群管理。 3. 在集群列表页面中,单击目标集群右侧操作列下的详情。 4. 在控制台左侧导航栏中,单击配置管理>配置项。 5. 在配置项列表,在左上角选择命名空间并单击创建配置项。
  • 介绍如何修改配置项。 1. 登录边缘容器集群控制台。 2. 在控制台左侧导航栏中,单击集群管理。 3. 在集群列表页面中,单击目标集群右侧操作列下的详情。 4. 在控制台左侧导航栏中,单击配置管理>配置项。 5. 在配置项列表,单击目标服务右侧的编辑。
  • 绍如何删除配置项。 1. 登录边缘容器集群控制台。 2. 在控制台左侧导航栏中,单击集群管理。 3. 在集群列表页面中,单击目标集群右侧操作列下的详情。 4. 在控制台左侧导航栏中,单击配置管理>配置项。 5. 在配置项列表,单击目标服务右侧的删除。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部