Kubernetes 多集群调度方案调研

Kubernetes 是一个容器编排平台,用于调度、部署和管理容器化应用。并且经过几年的发展,k8s 已经成为事实上的容器编排平台标准。集群是 k8s 架构的构建块(building block)。集群由多个工作节点(物理机或者虚拟机)组成,提供一个可供容器运行的资源池。一个集群拥有:

  • 一个单独的 API 入口
  • 一个集群范围的资源命名组织结构
  • 一个调度域
  • 一个服务路由域
  • ……
    每个集群都是独立的系统,可以部署在公司的自建机房,也可以部署在云厂商的一个可用区。k8s 负责管理集群的可用资源:调度器将容器调度到适当的机器、kubelet 负责 pod/ 容器的生命周期管理。这些都是大家很熟悉的概念了。但是 k8s 的作用范围是集群内,一个集群内的控制平面无法感知另一个集群的资源余量和服务状态。当多集群的应用场景出现时,我们怎么处理多个集群的调度呢。

为什么要有多集群调度?

通常来说,一个集群的大小需要预估业务的资源总量。当资源不够时,可以通过增加机器数量来进行集群扩容。但是集群规模也不是无限上升的。当节点 /pod 的数量越多,对控制平台的组件的压力就越大,进而影响集群整体稳定性。

  • 单集群的容量限制:单集群的最大节点数不是一个确定值,其受到集群的部署方法和业务使用集群资源的方式的影响。在官方文档中的集群注意事项里提到单集群 5000 个节点上限,我们可以理解为推荐最大节点数。
  • 多租户:因为容器没法做到完美的隔离,不同租户可以通过不同宿主机或者不同集群分割开。对企业内部也是如此,业务线就是租户。不同业务线对于资源的敏感程度也不同,企业也会将机器资源划分为不同集群给不同业务线用。
  • 云爆发&#

猜你喜欢

转载自blog.csdn.net/qq_39221436/article/details/125690824
今日推荐