文章插图
定时扩缩容是指应在固定时间点执行应用扩容来应对流量的高峰期 。K8s本身没有这个概念 , 这里在Karmada控制平面定义了CronHpa资源 , 并通过Karmada-scheduler对多集群统一调度 。避免非联邦化集群在多个member集群创建多个cronhpa 。定时功能通过go-cron库实现 。
CronHpa流程:
- 用户根据业务需求 , 创建CronHPA 。定义扩容时间和缩容时间 。
- 到扩容时间点 , CronHPAController开始扩容workload 。
- Karmada-scheduler开始调度 , 根据每个集群的资源开始合理分配每个集群的副本数 。
- 到缩容时间点 , CronHPAController开始缩容workload 。
文章插图
手动扩缩容流程:
- 用户指定workload , 进行扩容或者缩容 。
- Kamrada-scheduler开始调度 , 合理分配扩容或者缩容值到每个集群 。
指定缩容流程:
- 用户在clusterA 指定workload下面一个pod进行缩容 , 需要在
ScaleStrategy.PodsToDelete指定pod 。 - 需要在Karmada实现openkurise实现该字段的资源解析 , 不让它被控制平面覆盖 。
- 并在控制平面更新workload的副本和pp资源 , 保证副本数和调度结果一致 。
- member集群的openkruise开始删除指定的pod 。
3.3 统一调度3.3.1 多集群调度
文章插图
Karmada多集群调度主要实现跨集群资源的合理分配和集群故障快速迁移业务 。如上图所示主要通过Karmada scheudler和emulator配合实现 , 其中emulator主要负责每个集群的资源的估算 。
workload调度流程:
- 用户定义workload和策略匹配 , 生成RB资源 。
- doSchedulerBinding开始对RB进行调度 , 通过预选和优选调度算法选择合适的集群 , 当前不会进行资源计算 , 和K8s调度预选和优选不一样 。
- selecClusters根据筛选的集群 , 进行副本分配 。这里有2种模式 , 主要根据用户配置的策略去选择 。
a.Static scheduler 只计算所有资源的request , 不考虑调度规则 。
b.Dynamic scheudler 会在计算所有request的同时 , 也会考虑一部分调度规则 。 - 最终计算出每个集群分配的副本数并更新RB资源 , 调度结束后其它控制器会根据RB进一步处理 。
- 比如当集群clusterA发生故障 , 在一定判定条件内 , 会触发Karmada-scheduler重新调度 。
推荐阅读
- SpringBoot实现多数据源配置详解
- 关于接口测试,你了解多少?
- 多样性视觉常识推理数据集GD-VCR
- 回顾:都说娱乐圈钱好挣,这4位明星的家底,确实让很多人羡慕不已
- 布丁多肉怎么养才长得好
- 紫牡丹多肉夏天怎么养 紫牡丹多肉植物怎么养
- TVB知名老戏骨罕见现身,满头白发烟不离手,结婚30多年坚持丁克
- 以爱为营开播在即!冲着白鹿去的,意外被20多岁小姐姐吸引
- 玛格丽特怎么养? 玛格丽特多肉怎么养才长得好
- 空气湿度多少为最佳 鼻炎空气湿度多少为最佳