2022全球分布式云大会·深圳站于12月21日正式召开,全球分布式云联盟携手阿里云、腾讯云、华为云、天翼云、浪潮云等联盟成员,共同打造属于分布式云计算的年终科技盛典,深度总结分布式云计算发展至今取得的科技实践成果,立足深圳、辐射华南、影响全国,以分布式云计算筑牢数字化转型的基石底座,擘画数字化深水区新商业版图!
在12月22日上午举办的“云原生开源生态及实践论坛”上,华为云多云容器技术专家 Karmada社区Maintainer 任洪彩发表了题为《Karmada 打造分布式云原生基础设施生产实践 》的精彩演讲,本文为演讲内容文字实录。
Federation于2016年社区立项,奠定了容器混合云基础架构,基于K8s原生API分发应用,独立API server及控制面组件,易于服务化,在欧洲核子中心CERN大规模落地。Federation v1的主要问题在于信息嵌入Annotation,易用性差,并发写API不安全;缺少独立API对象,难以控制版本质量;不易扩展(调度、生命周期管理)。
Federation v2
2017年起,Federation发起革新,改进模块化设计;独立Placement策略和Override策略;
Federation v2取代Federation v1 ,成为社区唯一官方实现。
但Federation v2依然存在缺陷,例如,v2与单集群API两张皮,不受业界认可;新API易用性差,大量字段需要手动填写;自我定位为提供building blocks,用户引入后仍要二次开发。
BindingController 根据 Resource Binging 资源内容创建 work 资源到各个成员集群的执行命名空间, work 中描述了要分到目标集群的资源内容,最终由 ExeuctionController 在各个成员集群中创建被分发的资源。
1 跨云多集群管理
跨云多集群管理是karmada最基础的能力。接入模式方面,Karmada支持Push模式(Karmada与集群Apiserver直连)和Pull模式(agent负责上传下达)。每个集群有独立的namespace,存放发往集群的资源配置以及集群同步信息,从而达成集群间的资源隔离。Karmada支持所有符合K8s规范的集群,包括公有云、自建集群以及异构边缘集群。
2 多集群调度
Karmada提供丰富的调度策略:
Toleration:基于Taint和Toleration的调度
SpreadConstraint:基于集群拓扑的调度
ReplicasScheduling :针对有实例工作负载的复制模式与拆分模式
ArgsOverider:启动参数差异化配置
CommandOverrider:启动命令差异化配置
L abelsOverrider:label差异化配置
AnnotationsOverider :annotation差异化配置
PlainText:通用差异化配置
Karmada调度是以集群的资源信息为依据进行决策,通过控制器与集群之间的同步获取资源信息,以此生存进群的资源画像,借助estimator组件提供模拟调度。如果因为集群信息发生变化,导致调度的实例无法运行,则可以通过Descheduler驱逐无效实例,重新调度。
4 应用跨集群故障迁移
集群故障迁移
Karmada支持用户设置分发策略,在集群发生故障后,将故障集群实例进行自动的集中式或分散式的迁移。
集群污点设置
当用户为集群设污点,且资源分发策略无法容忍污点时,Karmada也会自动触发集群实例的迁移。
服务不断服
在实例迁移过程中。Karmada能够保证服务实例不跌零,从而确保服务不会断服。
5 全局资源统一视图
借助Karmada Search的能力,可以配置化缓存指定的资源信息,并支持全局模糊搜索或精确搜索。缓存数据如罗进入第三方存储,可以借助搜索引擎结合用户配置索引,形成更加丰富的检索手段。
6 统一认证鉴权
Karmada聚合API统一多集群访问入口,资源访问权限控制与成员集群一致,控制面只需关注是否有成员集群的访问权限。在此基础上,可以实现跨集群的统一运维。
7 类型无关的多云资源动态分发
8 跨集群服务治理
多集群服务发现:
1 在member1集样上创建ServiceExpor;
2 将Service的EndpointSlice收集 到Karmada控制面上,并派生相内的service (以derived-为前缀);
3 在member2集群 上创建Servicelmport ;
4 将EndpointSlice同步 到member2集群上。
多集群网络支持:使用submarin打通集群问容器网络。
1 VIPKID(GitOps)
2 vivo(CICD)
3 中国移动云(MySQL数据库服务)
4 飓风引擎(低代码平台)
更多落地案例请参考:https://karmada.io/zh/docs/next/casestudies/adopters/