『华为云』任洪彩:Karmada 打造分布式云原生基础设施生产实践

2022全球分布式云大会·深圳站于12月21日正式召开,全球分布式云联盟携手阿里云、腾讯云、华为云、天翼云、浪潮云等联盟成员,共同打造属于分布式云计算的年终科技盛典,深度总结分布式云计算发展至今取得的科技实践成果,立足深圳、辐射华南、影响全国,以分布式云计算筑牢数字化转型的基石底座,擘画数字化深水区新商业版图!

『华为云』任洪彩:Karmada 打造分布式云原生基础设施生产实践-云投网

在12月22日上午举办的“云原生开源生态及实践论坛”上,华为云多云容器技术专家 Karmada社区Maintainer 任洪彩发表了题为《Karmada 打造分布式云原生基础设施生产实践 》的精彩演讲,本文为演讲内容文字实录。

多集群技术演进过程

Federation v1

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,用户引入后仍要二次开发。

Karmada架构及核心能力 karmada架构

Karmada 结合了华为云容器平台 MCP 以及 Kubernetes Federation 核心实践,并融入了众多新技术:包括 Kubernetes 原生 API 支持、多层级高可用部署、多集群自动故障迁移、多集群应用自动伸缩、多集群服务发现等,并且提供原生 Kubernetes 平滑演进路径,让基于 Karmada 的多云方案无缝融入云原生技术生态,为企业提供从单集群到多云架构的平滑演进方案。

Karmada 分发资源到成员集群流程如上图所示, 在 karmada 控制平面创建 Resource Template 即为 kubernetes 原生资源,例如 Deployment,Service, configmap 等资源,同时创建 Propagation Policy 资源用来描述分发 Resource Template 到成员集群的策略,例如描述调度到哪些成员集群,使用静态权重策略等,如果有需要同时也可以创建 Override Policy 用来覆盖分发到不通成员集权中 Resource Template 中某些字段,例如修改 Deployment 中的容器镜像地址,容器参数等。

BindingController 根据 Resource Binging 资源内容创建 work 资源到各个成员集群的执行命名空间, work 中描述了要分到目标集群的资源内容,最终由 ExeuctionController 在各个成员集群中创建被分发的资源。

用户或管理员通过提前预制Propagation Policy和Override Policy决定向哪些集群分发指定资源的差异化策略,用户就可以直接提交K8s原生的API定义,karmada调度器和控制器会协助接力,将资源配置散发至多个集群中。

Karmada核心能力

1 跨云多集群管理

跨云多集群管理是karmada最基础的能力。接入模式方面,Karmada支持Push模式(Karmada与集群Apiserver直连)和Pull模式(agent负责上传下达)。每个集群有独立的namespace,存放发往集群的资源配置以及集群同步信息,从而达成集群间的资源隔离。Karmada支持所有符合K8s规范的集群,包括公有云、自建集群以及异构边缘集群。

2 多集群调度

Karmada提供丰富的调度策略:

ClusterAfinity:基于ClusterName、Label、 Field的定向调度

Toleration:基于Taint和Toleration的调度

SpreadConstraint:基于集群拓扑的调度

ReplicasScheduling :针对有实例工作负载的复制模式与拆分模式

多集群分发的典型场景就是集群的差异化配置,Karmada支持如下差异化配置手段:

ImageOverrider:镜像差异化配置

ArgsOverider:启动参数差异化配置

CommandOverrider:启动命令差异化配置

L abelsOverrider:label差异化配置

AnnotationsOverider :annotation差异化配置

PlainText:通用差异化配置

3 多集群精确调度及重平衡

Karmada调度是以集群的资源信息为依据进行决策,通过控制器与集群之间的同步获取资源信息,以此生存进群的资源画像,借助estimator组件提供模拟调度。如果因为集群信息发生变化,导致调度的实例无法运行,则可以通过Descheduler驱逐无效实例,重新调度。

4 应用跨集群故障迁移

集群故障迁移

Karmada支持用户设置分发策略,在集群发生故障后,将故障集群实例进行自动的集中式或分散式的迁移。

集群污点设置

当用户为集群设污点,且资源分发策略无法容忍污点时,Karmada也会自动触发集群实例的迁移。

服务不断服

在实例迁移过程中。Karmada能够保证服务实例不跌零,从而确保服务不会断服。

5 全局资源统一视图

借助Karmada Search的能力,可以配置化缓存指定的资源信息,并支持全局模糊搜索或精确搜索。缓存数据如罗进入第三方存储,可以借助搜索引擎结合用户配置索引,形成更加丰富的检索手段。

6 统一认证鉴权

Karmada聚合API统一多集群访问入口,资源访问权限控制与成员集群一致,控制面只需关注是否有成员集群的访问权限。在此基础上,可以实现跨集群的统一运维。

7 类型无关的多云资源动态分发

Karmada支持类型无关的多云资源动态分发。

8 跨集群服务治理

多集群服务发现:

1  在member1集样上创建ServiceExpor;

2  将Service的EndpointSlice收集 到Karmada控制面上,并派生相内的service (以derived-为前缀);

3  在member2集群 上创建Servicelmport ;

4  将EndpointSlice同步 到member2集群上。

多集群网络支持:使用submarin打通集群问容器网络。

Karmada生产实践案例

据目前公开的数据,Karmada已经在互联网、金融等领域的13家企业落地应用。

1 VIPKID(GitOps)

与GitOps结合,利用Karmada兼容K8s API的能力,帮助用户快速进行集群的基础设施建设和应用部署。

2 vivo(CICD)

Karmada与传统的CICD实践相结合,实现多集群联动,简化应用交付过程,以简单的配置完成应用在多集群间的灰度发布等发布策略。

3 中国移动云(MySQL数据库服务)

用户在移动云购买数据库服务,可以通过Karmada进行调度,根据用户需求将服务调度至集群的拓扑位置,对集群的资源利用率进行决策,部署相应的实例,从而实现提高资源利用率的效果。后续可以通过Karmada对MySQL进行运维和监控,减轻托管集群的访问压力。

4 飓风引擎(低代码平台)

使用Karmada进行应用的快速部署,支持同步多区域发布、按地域就近发布等;也可以通过配置的方式进行管理和定制。

更多落地案例请参考:https://karmada.io/zh/docs/next/casestudies/adopters/

*文章为作者独立观点,不代表云投网立场
发表评论

坐等沙发
相关文章
华为云全新CloudMatrix架构亮相WAIC 以云化算力为AI发电
华为云全新CloudMatrix架构亮相WAIC 以…
助力数字经济发展,厦门携手华为云探索人工智能领域创新实践
助力数字经济发展,厦门携手华为云探索…
大模型热潮起,AI重塑千行百业,影视、游戏、音频、动漫等数字文娱产业焕新升级
大模型热潮起,AI重塑千行百业,影视、…
华为云石冀琳:AI重塑数字文娱,盘古大模型使能文娱多领域AIGC创新
华为云石冀琳:AI重塑数字文娱,盘古大…
华为云“自动驾驶关键技术攻坚”倡议行动发布
华为云“自动驾驶关键技术攻坚”倡议行动…
华为云能力中心开业
华为云能力中心开业
我还没有学会写个人说明!

24小时排行

  • 暂无文章