写点什么

Kosmos 介绍

作者:畅聊云原生
  • 2023-12-01
    江苏
  • 本文字数:1933 字

    阅读完需:约 6 分钟

Kosmos介绍

Kosmos 是移动云开源的分布式云原生联邦集群技术的集合,其名称 Kosmos:K 代表 kubernetes,Cosmos 表示宇宙(希腊语),寓意 Kubernetes 的无限扩展。

Kosmos 是什么?

Kosmos 对下整合基础设施资源,对上为平台产品提供高阶能力,实现了多云多集群的统一管理编排、网络连通、多级调度。Kosmos 完全兼容 k8s API,用户可以像使用单集群那样使用联邦集群,尤其像数据库这类有状态应用,例如 MySQL-Operator 可以不需要任何改造将 MySQL 主备实例编排在 kosmos 管理的跨域集群中。目前,Kosmos 在移动云中承载了大量业务,它经历过长期生产的考验。

Kosmos 能做什么?

目前,kosmos 主要包括三大模块,分别是:多集群网络、多集群管理编排、多集群调度。此外,kosmos 还配备一款 kosmosctl 工具,可以快速进行 kosmos 组件部署、添加集群、测试网络连通性等工作。



多集群网络

Kosmos 网络的目标是打通多个 k8s 集群之间的网络,该模块可以独立部署使用。Kosmos 网络使 Pod 可以跨集群访问 Pod、Service,就像它们在同一个集群那样。目前,该模块主要具备以下功能:

  1. 多模式支持:对于添加的集群,可以选择P2P或者Gateway模式,其中P2P模式适用于 underlay 网络互通情况,具有更短的网络路径和更优的性能。Gateway模式更具兼容性,适合混合云、多云场景。

  2. 跨集群 PodIP、ServiceIP 互访:基于 Linux 隧道技术,实现了多个 Kubernetes 集群的 L3 网络互通,即用户可以在联邦集群范围内进行 Pod-to-PodPod-to-Service 访问。

  3. 网段冲突、双栈支持等:Kosmos 网络在设计时考虑了生产中的常见问题,例如:双栈支持、集群网段冲突等,以便于在复杂的生产环境中落地。网段冲突:Kosmos 网络允许在联邦集群中存在两个或多个集群使用相同的Pod/Service网段,便于用户对存量集群的管理。

Kosmos 多集群网络模块目前包含以下几个关键组件:

  • Controller-Manager:用于收集所在集群的网络信息,监听网络设置的变化;

  • Network-manager:用于计算各个节点需要的网络配置;

  • Agent:是一个 Daemonset,用于配置主机网络,例如隧道创建、路由、NAT 等;

  • Multi-Cluster-Coredns: 实现多集群服务发现;

  • Elector:负责 gateway 节点选举;



多集群管理编排

Kosmos 多集群管理编排模块实现了 Kubernetes 的树形扩展和应用的跨集群编排,目前主要支持以下功能:

  1. 完全兼容 k8s api:用户可以像往常那样,使用 kubectlclient-go等工具与 host 集群的kube-apiserver交互,而Pod实际上是分布在整个多云多集群中。

  2. 有状态应用、k8s-native 应用支持:除了无状态应用,Kosmos 还支持对有状态应用和 k8s-native(与 kube-apiserver存在交互)应用的编排。Kosmos 会自动检测Pod依赖的存储、权限资源,例如:pv/pvc、sa 等,并自动进行双向同步。

  3. 多样化 Pod 拓扑分布约束:用户可以轻易的控制 Pod 在联邦集群中的分布,如:区域(Region)、可用区(Zone)、集群或者节点,有助于实现高可用并提升资源利用率。

多集群调度(建设中)

Kosmos 调度模块是基于 Kubernetes 调度框架的扩展开发,旨在满足混合节点和子集群环境下的容器管理需求。这一调度器经过精心设计与定制,提供了以下核心功能,以增强容器管理的灵活性和效率:

  1. 灵活的节点和集群混合调度:Kosmos 调度模块允许用户依据自定义配置,轻松地将工作负载在真实节点和子集群之间智能地调度。这使得用户能够充分利用不同节点的资源,以确保工作负载在性能和可用性方面的最佳表现。基于该功能,Kosmos 可以让工作负载实现灵活的跨云跨集群部署。

  2. 精细化的容器分发策略:通过引入自定义资源定义(CRD),用户可以精确控制工作负载的拓扑分布。CRD 的配置允许用户明确指定工作负载的 pod 在不同集群中的数量,并根据需求调整分布比例。

  3. 细粒度的碎片资源整理:Kosmos 调度模块能够智能感知子集群中的碎片资源,有效避免了 pod 被调度之后部署时子集群资源不足的情况。这有助于确保工作负载在不同节点上的资源分配更均匀,提升系统的稳定性和性能。

无论是构建混合云环境还是需要在不同集群中进行工作负载的灵活部署,Kosmos 调度模块都可作为可靠的解决方案,协助用户更高效地管理容器化应用。

Kosmos 承载能力分析

KOSMOS 多集群管理可以稳定支持 100 个大规模集群,管理超过 50 万个节点和 50 万个 Pod,可以满足用户在大规模生产落地的需要。

APIResponsivenessPrometheus 分析结果:




Kosmos 开源的价值

一个项目想要蓬勃发展,我们的力量是有限的,需要更多志同道合的开发者加入我们,集思广益,才能让 kosmos 更好的发展。同时,也希望更多的开发者来指出我们急需完善的地方。

KOSMOS-致力于打造一站式资源联邦集群体系方案。我们认为开源能引导 Kosmos 朝着正确的方向发展,能够把 Kosmos 打磨的更好。我们期待与大家讨论实现思路和技术细节,欢迎大家的 issue 和 PR。


相关链接:

[1]https://github.com/kosmos-io

[2]https://github.com/kosmos-io/kosmos

发布于: 刚刚阅读数: 6
用户头像

还未添加个人签名 2023-10-13 加入

还未添加个人简介

评论

发布
暂无评论
Kosmos介绍_畅聊云原生_InfoQ写作社区