Karmada: 云原生多云容器编排平台

·  阅读 1224
Karmada: 云原生多云容器编排平台

7月17日,在Cloud Native Days China云原生多云多集群专场,华为云原生开源负责人王泽锋发表了《Karmada: 云原生多云容器编排平台》主题演讲,分享了在云原生多云多集群方面的思考与实践。

图片

以下为演讲全文

根据最新的调查报告显示,超过93%的企业正同时使用多个云厂商的服务。云原生技术和云市场不断成熟,多云、多集群部署已经成为常态,未来将是编程式多云管理服务的时代。
图片

云原生多云多集群的典型阶段

阶段一:一群孤岛

  • 一致的集群运维
  • 一致的应用交付
  • 业务割裂,互不感知
  • 数据孤岛、资源孤岛、流量孤岛

阶段二:威尼斯水城

  • 统一应用交付(部署运维)
  • 统一应用访问(流量分发)
  • 统一资源分配(编排调度)
  • 少量、小压力的跨集群业务访问

阶段3:大航海时代

实例、数据、流量:

  • 自动调度
  • 自由伸缩
  • 自由迁移

目前,从业界的产品和一些用户二次开发使用的进度来看,还处于从一群孤岛到威尼斯水城的过渡阶段,一些开源的软件和厂商的产品,大部分还是在做统一的集群生命周期管理与集群的目录,以方便快速的选择切换集群,外加集群的外部流量打通进行全局流量的分配等等。但像跨集群自动分配以及应用的跨集群等这些能力是缺失的。

现阶段,云原生多云多集群业务的编排也面临着诸多挑战:

1)集群繁多的重复劳动:运维工程师需要应对繁琐的集群配置、不同云厂商集群间的管理差异以及碎片化的API访问入口等问题;

2)业务过度分散的维护难题:应用在各集群的差异化配置繁琐;业务跨云访问以及集群间的应用同步难以管理。

3)集群的边界限制:应用的可用性受限于集群;资源调度、弹性伸缩受限于集群。

4)厂商绑定:业务部署的黏性问题,缺少自动化故障迁移;缺少中立的开源多云容器编排项目。

多集群容器编排的前世今生

图片

Karmada:开源的云原生多云容器编排平台

图片

上图为Karmada在开源社区技术全景图,Karmada将以模块化的方式提供应用多集群部署、高可用调度、故障迁移、多集群服务发现和流量治理、多云集群生命周期管理等能力集,并面向多种典型的用户场景预置策略集,让用户可以结合企业实际情况自由定制适合自身的多云平台。

Karmada重点会基于Kubernetes的原生API提供多集群应用管理的能力,帮助用户实现零代码改造甚至零yaml改造到多集群架构的迁移。在能力方面,我们主要帮助用户解决全网统一管理以及全网集群的统一管理,另外我们会内置典型的应用部署模型,包括两地三中心等。

Karmada 架构

图片

Karmada通过独立的API 服务器(Karmada API Server)提供与其他组件进行通信的 REST 接口,包含Kubernetes原生API及Karmada扩展API,而Karmada 控制管理器根据用户创建的 API 对象执行操作, Karmada 调度器则实现应用在多集群中的调度。

Karmada核心概念

图片

Resource Template

  • K8s原生API定义,包括CRD
  • 无需修改即可创建多集群应用

Propagation Policy

  • 可重用的应用多集群调度策略

Resource Binding

  • 通用类型,驱动内部流程

Override Policy

  • 跨集群可重用的差异化配置策略

Work

  • 子集群最终资源在联邦层的映射

Karmada API workflow

图片

Karmada内部工作流程

多集群应用部署

1)零改造 — 使用K8s原生API部署一个多集群应用

图片

  • 示例策略:为所有deployment配置多AZ的HA部署方案

图片

  • 使用标准的K8s API定义部署应用
  • kubectl create -f nginx-deployment.yaml

2)Propagation Policy: 可重用的应用多集群调度策略

图片

resourceSelector

  • 支持关联多种资源类型
  • 支持使用 name 或 labelSelector 进行对象筛选

placement

clusterAffinity:

  • 定义倾向调度的目标集群
  • 支持通过 names 或 labelselector 筛选

clusterTolerations:

  • 类似单集群中Pod tolerations和 node taints

spreadConstraints:

  • 定义应用分发的HA策略
  • 支持对集群动态分组:按Region、AZ、特性label分组,实现不同层级的HA

3)Override Policy: 跨集群可重用的差异化配置策略

图片

resourceSelector

  • 支持使用 name 或 labelSelector 进行对象筛选

overriders

  • 支持多种override插件类型
  • plainTextOverrider :基础插件,纯文本操作替换
  • imageOverrider:针对容器镜像的差异化配置插件

4)Member Cluster API: 用户自助可查的资源池基本单元

图片

syncMode

  • 支持使用 Push 或 Pull 模式与集群进行同步

secretRef

  • 分离Push模式下集群访问凭据,便于开放 clusters API 供用户自助查询

taints

  • 集群级别taint - toleration机制,支持集群级资源预留及驱逐

kubernetesVersion, apiEnablements

  • K8s版本,集群开启的API列表,支持基于API依赖的调度

resourceSummary

  • 集群资源信息(容量、使用量、调度中)

Karmada 社区路标

目前,我们已经实现了Q1与Q2规划的特性,最新发布的0.7版本提供了多集群东西向服务发现,多集群外部流量接入目前在研发当中。版本的发布我们是保持一个月一个版本的频率,以让用户快速使用。在Q4,我们计划重点集成业界已有的一些周边项目,并在今年完成整体技术栈的能力开发。\

图片

附:Karmada社区技术交流地址

项目地址:

github.com/karmada-io/…

Slack地址:

karmada-io.slack.com

分类:
开发工具
标签:
分类:
开发工具
标签:
收藏成功!
已添加到「」, 点击更改