Kubernetes:用虚拟集群节省成本

1750 字丨阅读本文需 4 分钟

运行过有多个集群的Kubernetes的人都知道成本会迅速变高。无论您如何创建集群,添加的每个集群都会增加更多成本。一个明显的成本是控制平面,但总会有更多成本,比如每个集群都需要的额外API服务器,它本身不使用资源,但耗用现有资源池中的资源。或者您可能需要为每个集群使用单独的负载均衡系统,而不是在应用程序之间共享一个系统。

本文将更深入地探讨这个话题,以及如何通过使用虚拟集群来减少或消除多个集群的额外成本。

简而言之,虚拟集群之于Kubernetes,如同虚拟机之于裸机主机。在一个集群中,您可以创建新的虚拟集群。与虚拟机一样,您将获得通过直接主机获得的所有功能,不过有几个限制。

深入探讨限制之前,先看看虚拟集群是什么、它们如何工作。您先要了解为什么要使用虚拟集群。虽然因组织而异,但有几个共同的原因。

使用虚拟集群的一大原因是,您已经在运行多个小型集群。许多组织在使用集群来改善开发者体验。许多公司不是将Kubernetes锁起来、成为开发者眼里的黑匣子,而是直接让开发者接触Kubernetes,这既为了提高开发者对技术的熟悉度,也为了提高开发者的速度,因为他们现在确切地知道应用程序会如何运行。

说到开发,集群就像开发者的机器一样是个人的。您永远不知道同事在做什么或在测试什么,所以要确保他们所做的一切并不影响到您。这是使用许多小集群的典例,但也是表明良好的开发者体验如何抬高成本的例子。

虚拟集群是一种在确保成本低的同时保持开发者体验佳、速度快的方法,下面有详细介绍。您已了解了为什么需要它,接下来得了解其工作原理。下面,您可以看到流行工具  vcluster如何实现虚拟集群。

图1

看看图的底部,您可以看到Host Cluster。这是在EKS、GKE、AKS  或运行Kubernetes的其他任何地方运行的集群。这是一个标准集群。除此之外,您拥有kube-system命名空间。同样,这是完全标准的,到目前为止还没有任何虚拟的东西。当您向上移动一步、看到ns-1和ns-2命名空间,虚拟部分就出现了。这些位于kube-system命名空间内。

创建虚拟集群时,您可以使用现有的命名空间或创建新的命名空间。通常创建新的命名空间。这个命名空间将含有几个pod。然后,这些pod含有一个您可以连接上去的“新”集群。随后,这个“新”集群有自己的API服务器,这意味着您可以将其作为自己的集群与之交互。

您想要使用虚拟集群时,就像运行vcluster  connect命令一样简单,这会导致两个结果。它将开始端口转发到虚拟集群内API服务器的端口,并创建kubeconfig.yaml文件。您可以将其与kubectl结合使用,在现在虚拟的集群中执行命令。(您在本文后面将获得有关如何为自己设置vcluster的快速入门指南,因此现在无需操心。)

可以在此处阅读有关虚拟集群细节的更多信息。

使用虚拟集群节省成本来自多个因素,主要来自虚拟集群提供的早已经过深思熟虑的功能,而不是来自专门致力于降低成本。

首先可节省控制平面的成本。节省多少取决于运行多少个集群。如果您在GKE上运行,每个所替换的集群每月可节省73美元。除此之外,您还可以从以前分离但现在共享的资源节省资金。现在可以共享负载均衡系统之类的东西,而不是为每个集群付费。

第二个节省成本的好处来自能够动态扩展Kubernetes集群。Kubernetes中的自动扩展绝非新功能。事实上,它是使用Kubernetes的最大卖点之一。然而,自动扩展实际使用的集群数量不是Kubernetes生来就有的。就虚拟集群而言,您可以在几秒钟内启用和停用集群,让每个开发者都可以拥有多个集群或没有集群,取决于任何时间点的需求。

通过关闭未使用的集群来节省成本可能很有效,但也很难管理。如果旨在具有动态性,难度更大,比如开发者家时关闭,第二天回到办公室时启用。这存在几个问题。首先,它可能很烦人。其次,毫无疑问开发者有时忘记关闭未使用的集群。开发者可能因软件缺陷而分心,或者回家后忘了日常工作中的这一步。

不过这倒不是说不能有效地使用该原则。借助Loft的睡眠模式,可以将集群设成一段时间不使用后自动进入睡眠状态。考虑到开发者每周平常工作40个小时,这么做最多可以节省76%的Kubernetes支出。

如果您想进一步了解虚拟集群的工作原理、它们带来什么好处,可以访问vcluster官网

您已意识到虚拟集群很有意义。下一步如何着手?下面是快速入门指南。如果需要更详细的说明,可以查看官方文档。不过事实上,创建vclusters  就像这里详述的一样简单。

要做的第一件事是下载vcluster CLI:

CLI安装完毕后,您可以使用vcluster create

您现在有了自己的虚拟集群,可以通过运行vcluster connect vcluster-1 -n  host-namespace-1连接到该集群。无需做另外的任何工作即可开始使用,此时您可以处理新创建的集群了。

现在您了解了虚拟集群的大致情况、如何使用vcluster来实现虚拟集群,以及虚拟集群如何帮助降低成本。通过将所有小型集群整合成一个大型“主机”集群,您可以节省每个控制平面的成本。除此之外,还可以节省更多的成本,因为现在更多的资源全面共享,而不是分散。

将上述内容与Loft的睡眠模式相结合,有望节省当前Kubernetes成本的三分之二以上。

原文标题:Kubernetes: Saving Cost with Virtual Clusters,作者:Kasper Siig

【51CTO译稿,合作站点转载请注明原文译者和出处】

【编辑推荐】

来源:51CTO布加迪

免责声明:凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处本网。非本网作品均来自其他媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如您发现有任何侵权内容,请依照下方联系方式进行沟通,我们将第一时间进行处理。

0赞 好资讯,需要你的鼓励
来自:51CTO
0

参与评论

登录后参与讨论 0/1000

为你推荐

加载中...