Gardener项目中的拓扑感知路由技术解析

Gardener项目中的拓扑感知路由技术解析

gardener Homogeneous Kubernetes clusters at scale on any infrastructure using hosted control planes. gardener 项目地址: https://gitcode.com/gh_mirrors/ga/gardener

引言

在现代云原生环境中,跨可用区(AZ)的网络通信往往会带来额外的成本和性能开销。Gardener项目通过引入拓扑感知路由(Topology-Aware Routing)技术,有效解决了这一问题。本文将深入解析Gardener中拓扑感知路由的工作原理、实现方式以及最佳实践。

拓扑感知路由的核心价值

拓扑感知路由主要解决两个关键问题:

  1. 成本优化:减少跨可用区的网络流量,避免云服务商对跨区流量收取的额外费用
  2. 性能提升:降低网络延迟,同一可用区内的通信通常比跨区通信具有更低的延迟

技术实现机制

Gardener根据底层Kubernetes集群版本的不同,采用不同的实现方式:

Kubernetes <1.31版本实现

对于Kubernetes 1.31以下版本,Gardener采用TopologyAwareHints特性结合自定义的EndpointSlice提示变异Webhook实现拓扑感知路由。

EndpointSlice提示变异Webhook

原生Kubernetes的EndpointSlice控制器存在几个关键限制:

  • 基于CPU平衡的启发式算法不适合Gardener场景
  • 低端点数量(小于10)时功能失效
  • 提示分配非确定性,可能随集群扩缩容而变化

Gardener通过自定义的EndpointSlice提示变异Webhook解决了这些问题。该Webhook会:

  1. 为每个EndpointSlice中的端点设置提示
  2. 将端点的提示设置为端点所在可用区
  3. 覆盖原生EndpointSlice控制器的提示分配
kube-proxy的角色

在启用拓扑感知路由后:

  • kube-proxy会根据EndpointSlice中的提示过滤端点
  • 优先选择与流量来源相同可用区的端点
  • 大多数情况下避免跨可用区通信

Kubernetes 1.31+版本实现

对于Kubernetes 1.31及以上版本,Gardener采用更先进的ServiceTrafficDistribution特性:

  • 使用PreferClose策略实现拓扑感知路由
  • 行为更简单且可预测:优先选择客户端所在可用区的端点
  • 无需复杂的启发式算法和Webhook干预

服务拓扑感知配置指南

Kubernetes <1.31版本配置

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.kubernetes.io/topology-mode: "auto"
  labels:
    endpoint-slice-hints.resources.gardener.cloud/consider: "true"

Kubernetes 1.31版本配置

apiVersion: v1
kind: Service
metadata:
  labels:
    endpoint-slice-hints.resources.gardener.cloud/consider: "true"
spec:
  trafficDistribution: PreferClose

Kubernetes ≥1.32版本配置

apiVersion: v1
kind: Service
spec:
  trafficDistribution: PreferClose

启用拓扑感知路由的前提条件

  1. Pod分布:确保服务后端的Pod分布在多个可用区
  2. 自动扩缩:组件应配置VerticalPodAutoscaler以应对负载不均
  3. 服务规模:服务应具有足够数量的端点(建议至少10个)
  4. 集群规模:Seed或garden运行时集群必须配置为多可用区

典型拓扑感知服务示例

Seed集群中的拓扑感知服务

  1. etcd服务etcd-main-clientetcd-events-client服务,被kube-apiserver消费
  2. kube-apiserver:被Shoot控制平面中的控制器消费
  3. 资源管理器gardener-resource-manager服务,处理webhook请求
  4. VPA Webhook:垂直Pod自动扩缩器的webhook服务

Garden运行时集群中的拓扑感知服务

  1. 虚拟etcd服务virtual-garden-etcd-main-client等,被多个核心组件消费
  2. 虚拟kube-apiserver:被Gardener控制平面多个组件消费
  3. Gardener API Server:处理Gardener API请求
  4. 准入控制器:处理准入控制webhook请求

集群级别启用指南

为Seed集群启用

apiVersion: core.gardener.cloud/v1beta1
kind: Seed
spec:
  settings:
    topologyAwareRouting:
      enabled: true

为Garden运行时集群启用

apiVersion: operator.gardener.cloud/v1alpha1
kind: Garden
spec:
  runtimeCluster:
    settings:
      topologyAwareRouting:
        enabled: true

注意事项

  1. 拓扑感知路由目前仍被视为alpha特性,建议仅用于评估目的
  2. 对于LoadBalancer类型的服务,外部流量无法受益于拓扑感知路由
  3. 仅对具有zone级别故障容忍的Shoot控制平面自动启用

通过合理配置拓扑感知路由,Gardener用户可以在多可用区环境中获得更好的网络性能和成本效益。

gardener Homogeneous Kubernetes clusters at scale on any infrastructure using hosted control planes. gardener 项目地址: https://gitcode.com/gh_mirrors/ga/gardener

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邱纳巧Gillian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值