|
|
|
|
公众号矩阵

Kubernetes:用虚拟集群节省成本

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

作者:布加迪来源:51CTO|2021-09-29 08:00

【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】

【编辑推荐】

  1. 使用 Velero 备份还原 Kubernetes 集群
  2. 用 Lima 在你的 Mac 上运行容器
  3. 从容器平台到微服务架构,当当网的云原生之路
  4. Java、Golang项目基于kubernetes集群CICD实践案例【Gogs工具链】
  5. 阿里云全新容器服务ACK Anywhere :拓展云边界至企业每个场景
【责任编辑:华轩 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

带你轻松入门 RabbitMQ

带你轻松入门 RabbitMQ

轻松入门RabbitMQ
共4章 | loong576

47人订阅学习

数据湖与数据仓库的分析实践攻略

数据湖与数据仓库的分析实践攻略

助力现代化数据管理:数据湖与数据仓库的分析实践攻略
共3章 | 创世达人

14人订阅学习

云原生架构实践

云原生架构实践

新技术引领移动互联网进入急速赛道
共3章 | KaliArch

42人订阅学习

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微