云卷云舒:分布式云原生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。

猜你喜欢

转载自blog.csdn.net/bishenghua/article/details/134968193