SuperEdge拓扑算法

SuperEdge service group利用 application-grid-wrapper实现拓扑感知,并在同一个nodeunit单元中完成服务的闭环访问

在深入分析application-grid-wrapper之前,这里简单介绍一下最初由社区Kubernetes支持的拓扑感知特性

Kubernetes服务拓扑感知特性在v1.17中发布,用于实现路由拓扑alpha邻近接入特性。用户需要在服务中添加一个拓扑关键字字段来指示拓扑关键字类型。将只访问具有相同拓扑域的端点。目前,有三种拓扑键可供选择:

“kubernetes.io/hostname”:访问此节点中的端点(kubernetes.io/hostname有相同的标签值)。如果没有端点,服务访问将失败
“topology.kubernites.io/zone”:访问同一区域域中的端点(topology.kubernetes.io/zone具有相同的标签值)。如果没有端点,服务访问将失败
“topology.kubernites.io/region”:访问同一个区域域中的端点(topology.kubernetes.io/region有相同的标签值)。如果没有端点,服务访问将失败
除了分别填写上述拓扑键中的一个之外,还可以将这些键构造成一个列表来填写,例如:【“Kubernetes。io/主机名" ",拓扑。Kubernetes。io/zone " “,拓扑。Kubernetes。io/region”],意思是:访问端点;首先在这个节点中;如果不存在,则访问端点;在同一个区域;如果不再存在,则访问同一区域的端点;如果它不存在,访问就会失败。

此外,您还可以在列表末尾(仅最后一项)添加“*”,这意味着如果之前的所有拓扑域都失败了,您可以访问任何有效的端点,即没有受限拓扑。示例如下:

# A Service that prefers node local, zonal, then regional endpoints but falls back to cluster wide endpoints.
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376
  topologyKeys:
    - "kubernetes.io/hostname"
    - "topology.kubernetes.io/zone"
    - "topology.kubernetes.io/region"
    - "*"

但是,服务组实施的拓扑感知和社区比较有以下差异:

服务组拓扑键可以自定义,即gridUniqKey,使用起来更灵活;目前社区实现只有三个选项:“kubernetes.io/hostname”、“topology.kubernetes.io/zone”和“topology.kubernetes.io/region”
服务组只能填写一个拓扑关键字,即只能访问该拓扑域中的有效端点,不能访问其他拓扑域中的端点;社区可以通过拓扑密钥列表和“*”访问其他备选拓扑域端点
服务组实现拓扑感知,服务配置如下:

# A Service that only prefers node zone1al endpoints.
apiVersion: v1
kind: Service
metadata:
  annotations:
    topologyKeys: '["zone1"]'
  labels:
    superedge.io/grid-selector: servicegrid-demo
  name: servicegrid-demo-svc
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    appGrid: echo

在创建完 ServiceGrid CR 后,ServiceGrid Controller 负责根据 ServiceGrid 产生对应的 service (包含由serviceGrid.Spec.GridUniqKey 构成的 topologyKeys annotations);而 application-grid-wrapper 根据 service 实现拓扑感知。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值