文章插图
重调度的存在主要解决应用下发到member集群没有真正的运行起来 , 导致出现这样的情况可能是集群资源在不断的变化 , 应用正在Karmada-scheduler多集群调度的时候可能满足 , 但经过member集群二次调度时候无法调度 。
重调度流程:
- 过滤RB资源 , 发现RB调度没有达到预期 。
- 对workload发起重新调度 。
- 进过预选、优选等流程 , 再次分配调度结果 。
- 最终将workload的所有pod调度起来 。
文章插图
目前社区单集群的调度估算器 , 只是简单模拟了4种调度算法 。和实际的调度算法有很大差距 , 目前线上有很多自研的调度算法和不同集群需要配置不同算法 , 这样估算器的精确度就会下降 , 导致调度出现pod pending的情况 。可以对单集群的调度模拟器进行优化 。
- 使用fake client 去模拟线上集群 。
- fake client启动k8s默认的调度器以及自研的调度算法 , 修改binding接口 。并配置到每个member集群 。
- podRequest请求每个集群调度模拟器 , 运行真实的调度算法 , 并计算调度结果 。
文章插图
对于通过非联邦化资源管理的应用 , 不能直接删除在创建 , 需要平滑迁移到Karmada管理 , 对于用户无感知 。
主要流程如下:
- 管理员通过容器平台 , 将需要迁移的应用插入迁移白名单 。
- 用户通过cicd发布 , 容器平台会进行发布接口调用 。
- isKarmada模块会查看迁移名单 , 在白名单内将资源联邦化 , 接入Karmada管理 。不在白名单内保持原有的静态集群管理 。
- 最终完成应用的发布 , 用户完全无感知 。保持2种管理方式并行存在 。
文章插图
有了应用迁移的能力 , 是否就可以保证整个流程百分百没有问题 , 其实是无法保证的 。这就必须有应用回滚能力 , 提升用户的迁移满意度 。
回滚的必要性总结:
- 应用发布迁移的过程中发生了未知的错误 , 并且短时间无法恢复 。避免阻塞应用正常发布 , 需要回滚 。
- 应用被Karmada接管后发生未知的错误 , 需要避免资源联邦化后无法控制 , 需要回滚 。
- 管理员通过容器管理平台 , 将需要回滚的应用从迁移白名单删除 。
- 并对应用对应的workload以及关联的资源打上注解 。
- 修改exection-controller源码 , exection-controller发现以上注解 , 最终调用update/create时不做处理 。
- 修改defaultInterpreter源码 , 发现以上注解ReviseReplica不修改副本数 。
- 这样就可以阻断Karmada控制平面和member集群的联系 。这里为什么没有直接从Karmada删除资源 , 主要避免删除这种高危操作以及方便后期恢复后重新接入Karmada 。
文章插图
应用迁移Karmada原则:
- 先测试、再预发、最后生产
- 重大变更 , 分批次灰度 , 按照1:2:7比例灰度迁移
- 责任人双方点检验证 , 并观察监控5~10分钟
推荐阅读
- SpringBoot实现多数据源配置详解
- 关于接口测试,你了解多少?
- 多样性视觉常识推理数据集GD-VCR
- 回顾:都说娱乐圈钱好挣,这4位明星的家底,确实让很多人羡慕不已
- 布丁多肉怎么养才长得好
- 紫牡丹多肉夏天怎么养 紫牡丹多肉植物怎么养
- TVB知名老戏骨罕见现身,满头白发烟不离手,结婚30多年坚持丁克
- 以爱为营开播在即!冲着白鹿去的,意外被20多岁小姐姐吸引
- 玛格丽特怎么养? 玛格丽特多肉怎么养才长得好
- 空气湿度多少为最佳 鼻炎空气湿度多少为最佳