我注意到有些云提供商为kubernetes提供了托管解决方案,我想知道这个产品涉及哪些组件。
我的直觉告诉我,会涉及到一些组件,比如NetworkPolicy、OPA,但我无法理解应该如何进行总体项目概述,因为对于集群的每个用户,API都是相同的。
他们是在部署各种控制飞机,还是为每个用户部署了一个单独的控制平面?
发布于 2021-04-16 16:01:49
我想您指的是主要云提供商中的托管解决方案,如GKE、EKS和AKS。每个云提供商对于如何管理集群控制平面都有不同的“秘密说明”,但共同的主题是控制平面(kube-apiserver,etcd,kube-控制器-manager,kubelet等)。作为集群所有者被隐藏在您面前。
从您作为其中一个集群的创建者/所有者的角度来看,它是一个完全孤立的集群。您可以为自己的集群获得自己的kubernetes API端点的IP地址。只有群集的数据显示在API中。
现在,只要他们在幕后所做的事情看起来像这样--这不是公开的知识,但我们可以对他们如何做这件事做出合理的猜测。
一种方法是,他们实际上正在为每个集群构建独立的控制平面,并使用自己的VM完成。有一些像ClusterAPI这样的框架可以以自动化的方式实现这一点。但这并不是一种在大型云平台上运行数千或数百万Kubernetes集群的资源高效方式,所以这可能不是大公司的做法。
另一种方法是在VM池中的独立容器中运行独立的控制平面组件。甚至可能是另一个库伯奈特星团。因此,当一个新的Kubernetes集群的请求出现时,协调器就会生成一个新的Kubernetes部署、一个新的etcd StatefulSet等等,并将它们连接到指定的工作节点池。我想这或多或少是谷歌和亚马逊正在做的事情,但可能比我所描述的要复杂得多。
最后,一种方法是将“上游”Kubernetes API和管理组件(除了kubelet和kube代理之外)全部消除,而是创建一些定制的、可扩展的、多租户的Kubernetes控制飞机服务。这似乎是谷歌可能做的事情,因为这将是最容易扩展的,从而允许他们以最低的成本提供性能最好的集群。然而,它偏离了上游Kubernetes代码,因此需要一个庞大的、资金充足的、专门的开发团队来完成这项工作。
如果您正在考虑构建您自己的多租户Kubernetes基础设施,我建议您考虑像Rancher这样的编制工具来实现这一点,而不是自己动手。使用类似Rancher的工具,您可以创建角色来控制租户的访问,并创建预先配置好的集群“模板”。租户单击一个按钮部署一个新的Kubernetes集群,使用您拥有的任何VM编排工具(比如VMware、Digital,或者像AWS或GCP这样的云提供商)。特别是牧场主也有能力运行多租户集群,即构建一个单一的、大型的Kubernetes集群,许多应用程序开发人员同时使用这个集群。在这种情况下,您将名称空间分配给每个应用程序团队(Rancher有一个他们称之为“项目”的抽象),每个应用程序团队都可以完全管理名称空间中的所有资源(S),但集群级别的任何资源都不能管理。然后由一个“平台运作”小组来决定(我想那是你?)若要管理群集本身,请执行以下操作。
https://serverfault.com/questions/1060601
复制相似问题