V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cesign
V2EX  ›  Kubernetes

Kubernetes 多集群管理 Karmada,跨集群弹性伸缩 FederatedHPA 突破新边界!

  •  
  •   cesign · 2023-07-17 15:30:26 +08:00 · 1058 次点击
    这是一个创建于 489 天前的主题,其中的信息可能已经有所发展或是发生改变。

    根据 Flexera 最新发布的《 2023 年云现状调查报告》,750 家受访企业中,高达 36%的企业表示云成本支出超过预期,另有 9%的企业云成本严重超出预期,企业急需有效手段来降低云成本支出:

    img

    同时,在这些企业中,有高达 87%的企业使用多云,多云架构的优势在于可以方便的提供业务高可用部署、满足安全合规的属地化部署、以及公有云弹性等能力,但如果缺少相应的成本管理,也容易导致云成本增加。

    img

    为了解决多云多集群下的成本难题,Karmada 率先提出并实现了支持多指标,多策略的全新跨集群 HPA (即 FederatedHPA ),实现业务跨集群弹性伸缩,为多云架构提供了新的玩法,比如本地数据中心+公有云的组合,业务优先使用本地数据中心资源,当本地资源不足时又可以借助公有云无限弹性能力,做到按需使用云资源,进而节省云成本开支。

    FederatedHPA

    Karmada FederatedHPA 可基于 CPU/Memory 利用率来自动伸缩业务,也可以基于各种自定义指标伸缩业务,其 YAML 配置示例为:

    apiVersion: autoscaling.karmada.io/v1alpha1
    kind: FederatedHPA
    metadata:
      name: nginx
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: nginx
      minReplicas: 1
      maxReplicas: 10
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 10
    

    通过使用 FederatedHPA ,可以实现应用跨集群弹性能力,如下图所示,应用部署在 cluster1 集群中,当流量洪峰到来时,应用可以先在 cluster1 集群中自动扩容,当 cluster1 资源受限时,应用可以自动在 cluster2 集群中扩容。

    img

    当然,Karmada FederatedHPA 带来的不仅仅是跨集群弹性伸缩,还能带来如下核心优势: 1.对于一个多集群业务,在每个集群中都有对应 HPA 资源,以伸缩业务。但分别管理这些 HPA 配置较为低效,而使用 Karmada FederatedHPA 能够统一配置多集群业务的伸缩,简化流程。 2.对于一个使用 Karmada FederatedHPA 的多集群业务,实例数会随着负载变化而变化。而这些新增或者减少的实例数,用户想要在不同集群,差异化的伸缩,如按可用资源比例,静态权重比例,优先顺序等。Karmada FederatedHPA 同样可满足这样的多集群差异化伸缩的诉求。

    3.对于一个使用 Karmada FederatedHPA 的多集群业务,在某个集群因故障而无法弹性时,Karmada 会在其他正常集群弹性,从而解决单点故障问题。

    统一弹性伸缩配置,提升管理效率

    传统的部署方式下,用户如果想在多个集群中配置弹性伸缩,以匹配业务请求负载,需要逐一管理集群中的 HPA ,繁琐而且容易出错,如下图:

    img

    使用 Karmade FederatedHPA ,能够实现统一配置多集群业务的弹性伸缩,在集群数量较多的情况下,能极大提高效率,如下图:

    img

    通过单一 FederatedHPA 对象,Karmada 会自动监测多个集群的业务负载,根据配置的策略,在不同的集群伸缩,最终匹配多集群服务的业务负载。

    优先扩容低成本集群业务,降低云成本支出 对于同一业务部署的多个集群,可能存在成本差异,用户可以利用 FederatedHPA 实现优先扩容成本更低集群的业务,实现更低的云成本消耗,例如:本地数据中心集群使用成本更低,公有云厂商提供的托管集群成本更高,因此,用户更愿意在本地数据中心中扩容业务。 下面我们给出一个优先扩容本地集群业务的例子:

    apiVersion: autoscaling.karmada.io/v1alpha1
    kind: FederatedHPA
    metadata:
      name: nginx
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: nginx
      minReplicas: 1
      maxReplicas: 10
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 80
    ---
    apiVersion: policy.karmada.io/v1alpha1
    kind: PropagationPolicy
    metadata:
      name: nginx
    spec:
      resourceSelectors:
        - apiVersion: apps/v1
          kind: Deployment
          name: nginx
      placement:
        clusterAffinities:
          - affinityName: local-cluster
            clusterNames:
              - local-cluster1
          - affinityName: cloud-cluster
            clusterNames:
              - local-cluster1
              - huawei-cluster1
        replicaScheduling:
          replicaDivisionPreference: Weighted
          replicaSchedulingType: Divided
          weightPreference:
            dynamicWeight: AvailableReplicas
    

    上面 PropagationPolicy 中配置有 本地集群组( local-cluster )和云上集群组( cloud-cluster )共两个集群组,Karmada 在扩容业务时,会优先尝试扩容在本地集群组中的业务,如果失败(缺乏资源),则继续扩容云上集群组的业务,从而实现在本地集群资源足够时,优先扩容本地集群的业务,实现更低的云成本消耗。

    总结

    FederatedHPA 为用户提供了跨集群弹性伸缩的能力,结合丰富的 PropagationPolicy/ClusterPropagationPolicy 调度策略,能满足不同的跨集群伸缩场景。

    Karmada 后续也会继续探索更多的跨集群伸缩场景,包括 定时联邦 HPA ,分布式多集群 HPA ,大家有任何感兴趣的想法,都欢迎大家来 Karmada 社区进行讨论和分享。

    附:Karmada 社区交流地址

    Karmada 官网: https://karmada.io/
    项目地址: https://github.com/karmada-io/karmada
    Slack 地址: https://slack.cncf.io/

    1 条回复    2024-11-10 22:53:11 +08:00
    headwindx
        1
    headwindx  
       7 天前
    karmada CRB 调度失败后,有办法重新触发调度吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   854 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 21:43 · PVG 05:43 · LAX 13:43 · JFK 16:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.