当前位置: 首页 > 科技观察

Kubernetes:通过虚拟集群节省成本

时间:2023-03-22 14:58:52 科技观察

【.com快速翻译】运行过Kubernetes多集群的人都知道成本会快速增加。无论您如何创建集群,您添加的每个集群都会增加成本。一个明显的成本是控制平面,但成本总是更多,比如每个集群需要额外的API服务器,它本身不使用资源,而是从现有资源池中消耗资源。或者您可能需要为每个集群使用单独的负载平衡系统,而不是在应用程序之间共享一个系统。本文更深入地探讨了这个主题,以及如何通过使用虚拟集群来减少或消除多个集群的额外成本。什么是虚拟集群?简而言之,虚拟集群之于Kubernetes就像虚拟机之于裸机主机。在集群内,您可以创建新的虚拟集群。与虚拟机一样,您可以获得直接托管的所有功能,但有一些限制。在深入探讨限制之前,让我们先了解一下虚拟集群是什么以及它们是如何工作的。您需要先了解为什么要使用虚拟集群。虽然因组织而异,但有几个共同的原因。使用虚拟集群的一个重要原因是您已经在运行多个小型集群。许多组织正在使用集群来改善开发人员的体验。许多公司没有将Kubernetes锁定为开发人员的黑匣子,而是直接让开发人员接触Kubernetes,这既是为了提高开发人员对该技术的熟悉程度,也是为了提高开发速度,因为他们现在完全了解应用程序的行为方式。在开发方面,集群就像开发人员的机器一样个性化。您永远不知道您的同事在做什么或测试什么,因此请确保他们所做的任何事情都不会影响您。这是使用许多小型集群的典型示例,也是良好的开发人员体验如何推高成本的示例。虚拟集群是一种在保持开发人员良好和快速体验的同时保持低成本的方法,如下所述。现在您知道了为什么需要它,是时候了解它是如何工作的了。下面,您可以看到流行的工具vcluster是如何实现虚拟集群的。图1查看图的底部,您可以看到主机集群。这是一个在EKS、GKE、AKS或Kubernetes运行的任何其他地方运行的集群。这是一个标准集群。除此之外,您还有kube-system命名空间。同样,这完全是标准的,到目前为止没有什么是假的。当您向上移动并看到ns-1和ns-2名称空间时,虚拟部分就出现了。它们位于kube-system命名空间内。创建虚拟集群时,您可以使用现有的命名空间或创建一个新的命名空间。通常会创建新的命名空间。这个命名空间将包含几个pod。然后,这些Pod包含一个您可以连接到的“新”集群。这个“新”集群然后拥有自己的API服务器,这意味着您可以像它是您自己的集群一样与之交互。当您想使用虚拟集群时,只需运行vclusterconnect命令即可,这会导致两个结果。它将开始端口转发到虚拟集群内的API服务器的端口,并创建kubeconfig.yaml文件。您可以将其与kubectl结合使用,以在现在的虚拟集群中执行命令。(您将在本文后面获得有关如何为自己设置vcluster的快速入门指南,所以现在不用担心。)您可以在此处阅读有关虚拟集群细节的更多信息。成本节约使用虚拟集群的成本节约来自多个因素,主要来自虚拟集群提供的经过深思熟虑的功能,而不是来自对降低成本的特定关注。首先,可以节省控制平面的成本。节省多少取决于运行的集群数量。如果您在GKE上运行,则每个更换的集群每月可节省73美元。最重要的是,您可以从以前独立但现在共享的资源中节省资金。现在可以共享负载平衡系统之类的东西,而不是为每个集群付费。第二个节省成本的好处来自能够动态扩展Kubernetes集群。Kubernetes中的自动缩放绝不是新鲜事物。事实上,这是使用Kubernetes的最大卖点之一。然而,自动缩放实际使用的集群数量并不是Kubernetes的本机功能。在虚拟集群的情况下,您可以在几秒钟内激活和停用集群,让每个开发者可以拥有多个集群或没有集群,这取决于任何时间点的需求。通过关闭未使用的集群来节省成本可能是有效的,但也难以管理。如果设计成动态的就比较困难了,比如开发者在家的时候关掉,第二天回到办公室再打开。这有几个问题。首先,它可能很烦人。其次,毫无疑问,开发人员有时会忘记关闭未使用的集群。开发人员可能会因软件错误而分心,或者在回家后忘记了日常生活中的这一步。然而,这并不是说不能有效地使用该原则。使用Loft的睡眠模式,您可以将集群设置为在一段时间不活动后自动进入睡眠状态。考虑到开发人员通常每周工作40小时,这样做最多可以节省76%的Kubernetes支出。如果您想详细了解虚拟集群的工作原理以及它们带来的好处,可以访问vcluster官网。创建虚拟集群您已经意识到虚拟集群很有意义。下一步是什么?这是一个快速入门指南。如果需要更详细的说明,可以查看官方文档。然而,实际上,创建vclusters就像此处详述的一样简单。首先要做的是下载vclusterCLI:$curl-s-L"https://github.com/loft-sh/vcluster/releases/latest"|\sed-nE's!.*"([^"]*vcluster-linux-amd64)".*!https://github.com\1!p'|\xargs-n1curl-L-ovcluster&&chmod+xvcluster&&\sudomvvcluster/usr/local/bin安装CLI后,可以使用vclustercreate-n用于创建虚拟集群的语法,如下所示:$vclustercreatevcluster-1-nhost-namespace-1您现在拥有了自己的虚拟集群,您可以通过运行vclusterconnectvcluster-1-nhost-namespace-连接到它1.不需要做任何其他事情来开始,此时你可以在你新创建的集群上工作。成本。通过将所有小型集群整合到一个大型“主机”集群中,您可以节省每个控制平面的成本。最重要的是,您可以节省更多,因为现在可以全面共享更多资源,而不是扩散;传播开。将上述与Loft的睡眠模式相结合,可以潜在地节省当前Kubernetes成本的三分之二以上。作者和来源是.com]