Kubernetes:用虚拟集群节省成本

译文
云计算 虚拟化
运行过有多个集群的Kubernetes的人都知道成本会迅速变高。无论您如何创建集群,添加的每个集群都会增加更多成本。

[[426435]]

【51CTO.com快译】运行过有多个集群的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:

  1. $ curl -s -L "https://github.com/loft-sh/vcluster/releases/latest" | \ 
  2. sed -nE 's!.*"([^"]*vcluster-linux-amd64)".*!https://github.com\1!p' | \ 
  3. xargs -n 1 curl -L -o vcluster && chmod +x vcluster && \ 
  4. sudo mv vcluster /usr/local/bin 

CLI安装完毕后,您可以使用vcluster create -n 语法来创建虚拟集群,就像这样:

  1. $ vcluster create vcluster-1 -n host-namespace-1 

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

结语

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

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

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

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

责任编辑:华轩 来源: 51CTO
相关推荐

2012-10-18 11:11:58

桌面虚拟化

2009-04-21 10:24:36

运维管理网管摩卡软件

2011-08-23 17:12:16

飞视美视频会议

2016-07-20 12:29:35

云计算

2018-03-06 09:49:27

区块链

2015-02-12 11:10:24

AWS数据中心风力发电

2020-07-08 10:11:45

云计算云服务私有云

2009-09-18 08:37:48

Windows 7企业部署节约成本

2018-05-03 14:53:58

数据中心节省成本停机

2015-07-02 09:32:57

DNS优化网速查漏洞

2017-04-19 15:57:26

NVIDIAGPU

2011-06-13 10:20:16

eX5服务器虚拟化

2011-06-30 10:02:53

微软Office 365云计算

2021-07-23 10:22:54

云计算数据技术

2015-04-15 15:21:45

2017-10-20 14:08:12

CIO大数据自动化

2011-05-07 10:57:39

喷墨多功能一体机节省技巧

2019-07-25 06:57:50

存储数据IT

2023-10-27 08:03:29

Kubernetes开源工具

2021-02-07 08:00:00

Kubernetes集群云原生
点赞
收藏

51CTO技术栈公众号