云原生社区直播回顾|丰富的 Kubernetes 生态助力多云平台建设

9 月 28 日,「DaoCloud 道客」云原生研发工程师、Clusterpedia 开源项目发起人蔡威受邀参加云原生学院第 37 期直播。在企业上云的过程中,“多云”成了大家越来越关注的话题。多集群的生命周期管理、跨集群的应用分发和调度等多云管理问题也成为企业必须要解决的问题。Kubernetes 通过标准的 OpenAPI 提供了统一的云环境,为多云的落地屏蔽了基础设施的差异。直播围绕多云场景下的 Kubernetes 生态展开,蔡威从不同的功能维度介绍了目前云原生社区相对成熟的开源项目和应用方案,多方位描绘了 Kubernetes 时代的多云平台建设蓝图。

01

多云需求
和 Kubernetes

在企业数字化转型的过程中,不同的厂商带来了不同的上云选择,有报告显示,平均每家企业要接入 2-4 朵云,多云已成现实。蔡威介绍,更为复杂的多云形态带来了更为困难的运维管理问题,多云彼此之间相互隔离,无法实现统一的资源管控。各大厂商各自为战,发展自己的生态体系,缺乏统一的 API 标准,使得多云管理成为了企业上云亟待解决的问题。Kubernetes 的出现,重新规划了 “云” 与 “多云”,一个 Kubernetes 集群,就等于一朵云。Kubernetes 提供统一的声明式 OpenAPI,为多云环境下的统一管理打通了渠道,为跨云的资源调度和管理奠定了基础。

02

多云场景下的
Kubernetes 生态

Kubernetes 所带来的不仅是标准 API,围绕 Kubernetes 构建的周边生态,更是加快多云平台搭建的关键因素。

一个多云平台的部署,首要解决的问题就是集群的生命周期管理,对于已经有主机的用户来说,可以选择一种方式——通过 Kubespray 的 Ansible 自动化运维方式来完成,「DaoCloud 道客」的开源项目 Kubean 正是采用这种方式进行已有 host 的管理,进而完成集群初始化、更新以及移除清理的操作。另外,Cluster API 的 BYOH Provider 组件以及近期开源的 KubeClipper 则是通过另一种方式——在主机上部署 Agent 监听集群是否需要初始化和更新,实现了多集群的生命周期管理。除了已有主机的用户以外,还有一部分用户会通过 IaaS 平台进行集群的创建和管理,而 Cluster API 和 Crossplane 这两个开源项目能够通过 Provider 的方式屏蔽底层 IaaS 的差异,有效解决基础设施接入的问题。

在多集群部署之后,下一步面临的问题就是如何实现应用、资源的分发和调度,蔡威将国内开源的两个项目 Karmada 和 Clusternet 进行了对比介绍。

  • 就操作而言,Karmada 通过独立的控制面使得多集群资源管理能够像操作单集群一样方便,Clusternet 需要在 kubectl clusternet 插件或者 client-go 中替换请求路径,来完成对多集群资源的管理。

  • 在进行资源分发和调度时,Karmada 和 Clusternet 都可以完成复制调度(资源副本数量在每个集群都一致)、权重调度(每个集群资源副本比重不同)和动态调度(根据集群使用情况调整资源副本数量)。Karmada 可以根据集群状态实现重新调度,Clusternet 原生支持 Helm 的分发,Karmada 则需要借助 Flux 项目来实现。

  • 对于资源的集群定制化,Karmada 和 Clusternet 呈现两种方式,Karmada 通过 ClusterOverPolicy 和 OverPolicy 实现,可以指定多种多个资源并选择一组集群,Clusternet 则通过 Globalization 和 Localization 与单一资源进行绑定,实现定制化。

在多云平台的建设过程中,跨集群服务访问的需求一直存在。「DaoCloud 道客」的开源项目 Ferry,通过一个控制面定义不同集群,确定需要开放到其他集群的服务,并通过 Ferry Tunnel 实现网络隧道的打通,进行服务的转发。社区中另一个开源项目 Skupper 则是通过在集群的命名空间单独完成配置,以此实现跨集群的服务访问。除此之外,对于更深一层的多云网络,即不同集群 pod 之间的访问,开源社区目前有 Submariner 和 Cilium Cluster Mesh 两个主流方案进行实现。

03

跨集群资源一步到位
Clusterpedia

以上的开源方案,为不同集群之间的资源建立了相关性,而「DaoCloud 道客」自主开源项目——Clusterpedia,进一步实现了多集群资源的聚合及检索。

Clusterpedia 不仅支持单一类型的资源获取,用户任意指定的资源类型都可获取到,本身遵循 All in One 的方式,一次请求可以检索到任何想要的单一类型(例如 deployment)或者多种类型的资源,并且都支持复杂的检索条件。Clusterpedia 可以兼容 Kubernetes V1.10  以上的任意版本,无需担心不同的 Kubernetes 版本带来的资源差异。Clusterpedia 可以像原生组件一样存在于多云平台中,实现无感知的自动化支持,用户只需要在 Cluster API 上创建好集群,或者在 Karmada 中接入一个集群,即可通过 Clusterpedia 进行请求和查询,无需其他运维操作。除此之外,用户本身能获取到的可能只有原生的资源样式,Clusterpedia 提供的多集群 Metrics Server 功能,可以在获取资源的同时了解到其计算和存储的真实用量信息,帮助用户更加方便地获取到多个集群内 Pod 和 Node 的资源用量,还可以让用户实现更加灵活的多集群动态调度。

未来,Clusterpedia 还将通过 Agent 模式深入边缘场景,解决云边协同场景下的多集群资源聚合及检索的问题,目前这一模式还处于规划阶段,欢迎大家时刻关注 Clusterpedia 项目的进展。

直播的最后,蔡威还对大家的疑问点进行了解答,可观看回放了解,欢迎添加小助手加入群聊,为大家提供直播回放和演讲 PPT,以及技术交流。

在此感谢大家的积极参与,我们将继续为大家带来更多更好的内容。

猜你喜欢

转载自blog.csdn.net/DaoCloud_daoke/article/details/127249288