写点什么

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

发布于: 19 分钟前
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 社区技术交流地址

 

项目地址:

https://github.com/karmada-io/karmada


Slack 地址:

https://karmada-io.slack.com


完整演讲视频,点击下方观看:


用户头像

还未添加个人签名 2020.02.11 加入

还未添加个人简介

评论

发布
暂无评论
Karmada: 云原生多云容器编排平台