Karmada:让跨集群弹性伸缩FederatedHPA突破新边界
本文分享自华为云社区《Kubernetes多集群管理Karmada,跨集群弹性伸缩FederatedHPA突破新边界!》,作者:华为云云原生团队。
根据 Flexera 最新发布的《2023年云现状调查报告》,750家受访企业中,高达36%的企业表示云成本支出超过预期,另有9%的企业云成本严重超出预期,企业急需有效手段来降低云成本支出:
▲ 图片1
同时,在这些企业中,有高达87%的企业使用多云,多云架构的优势在于可以方便的提供业务高可用部署、满足安全合规的属地化部署、以及公有云弹性等能力,但如果缺少相应的成本管理,也容易导致云成本增加。
▲ 图片2
为了解决多云多集群下的成本难题,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 集群中扩容。
▲ 图片3
当然,Karmada FederatedHPA 带来的不仅仅是跨集群弹性伸缩,还能带来如下核心优势:
1.对于一个多集群业务,在每个集群中都有对应HPA资源,以伸缩业务。但分别管理这些HPA配置较为低效,而使用 Karmada FederatedHPA 能够统一配置多集群业务的伸缩,简化流程。
2.对于一个使用 Karmada FederatedHPA 的多集群业务,实例数会随着负载变化而变化。而这些新增或者减少的实例数,用户想要在不同集群,差异化的伸缩,如按可用资源比例,静态权重比例,优先顺序等。Karmada FederatedHPA 同样可满足这样的多集群差异化伸缩的诉求。
3.对于一个使用 Karmada FederatedHPA 的多集群业务,在某个集群因故障而无法弹性时,Karmada 会在其他正常集群弹性,从而解决单点故障问题。
统一弹性伸缩配置,提升管理效率
传统的部署方式下,用户如果想在多个集群中配置弹性伸缩,以匹配业务请求负载,需要逐一管理集群中的 HPA,繁琐而且容易出错,如下图:
▲ 图片4
使用 Karmade FederatedHPA,能够实现统一配置多集群业务的弹性伸缩,在集群数量较多的情况下,能极大提高效率,如下图:
▲ 图片5
通过单一 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/

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
@Import :Spring Bean模块装配的艺术
本文分享自华为云社区《Spring高手之路8——Spring Bean模块装配的艺术:@Import详解》,作者:砖业洋__。 本文将带你深入探索Spring框架的装配机制,以及它如何使你的代码更具模块化和灵活性。我们首先介绍Spring手动装配的基础知识,然后进一步解析@Import注解在模块装配中的关键角色。文章涵盖从导入普通类、配置类,到使用ImportSelector和ImportBeanDefinitionRegistrar进行动态和选择性装配等多个层次,旨在帮助读者全面理解和掌握Spring的装配技术。 1. Spring手动装配基础 在Spring中,手动装配通常是指通过XML配置文件明确指定Bean及其依赖,或者在代码中直接使用new关键字创建对象并设定依赖关系。 然而,随着Spring 2.0引入注解,以及Spring 3.0全面支持注解驱动开发,这个过程变得更加自动化。例如,通过使用@Component + @ComponentScan,Spring可以自动地找到并创建bean,通过@Autowired,Spring可以自动地注入依赖。这种方式被称为 “自动装配”。...
- 下一篇
东方通信基于 KubeSphere 的云计算落地经验
作者:周峰 吴昌泰 公司简介 东方通信股份有限公司(以下简称“东方通信”)创立于 1958 年,是一家集硬件设备、软件、服务为一体的整体解决方案提供商。公司于 1996 年成功改制上市,成为上海证交所同时发行 A 股和 B 股的国有控股上市公司。公司业务主要包括:专网通信及信息安全产品和解决方案、公网通信相关产品及 ICT 服务、金融电子设备及软件产品、智能制造业务。 十四五期间,公司主责主业聚焦在以专网通信、公网通信、ICT 服务为基础的“信息通信产业”,金融电子为基础的“金融科技产业”和“智能制造产业”三大产业,围绕主责主业不断创新与转型升级。 肩负“科技创造价值,共筑美好生活”的使命,东方通信坚持“诚信、务实、创新、共赢”的理念,致力于为客户提供优质的产品、便利的体验、完美的方案和满意的服务,努力成为在国际市场中拥有优势品牌、持续创新和发展的领先企业! 技术现状 在使用 KubeSphere 之前,公司已经开始研究云原生和探索应用上云的道路。但是由于每个团队接触和学习云原生技术的时间不同,原生 Kubernetes 的使用还是存在一定的门槛。并且随着公司云的基础设施和使用团队的的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启