广告

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

  • 浏览(50)
  • 评论(0)
  • 译者:k8s

每一个尝试过使用多个集群运行Kubernetes的人都知道它很快就会变得昂贵。无论如何设置集群,每一个集群都会增加成本。一个明显的成本是控制平面,但总有一些额外的成本,例如每个集群都需要额外的API服务器,它本身不使用资源,但会占用现有池中的资源。或者,你可能需要为每个集群提供一个单独的负载均衡器,而不是在应用程序之间共享一个负载均衡器。

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

什么是虚拟集群?

简言之,虚拟集群对于Kubernetes来说就像虚拟机(VM)对于裸金属主机一样。在一个集群中,你可以创建新的虚拟集群。与虚拟机一样,你将获得通过直接主机获得的所有功能,但有一些限制。

在深入探讨这些限制之前,让我们先看看什么是虚拟集群以及它们是如何工作的。首先,你需要理解为什么首先要使用虚拟集群。

使用虚拟集群的一个主要原因是,你已经在运行许多小型集群。许多组织正在使用集群来改善开发人员的体验。公司没有将Kubernetes作为开发人员的黑匣子锁起来,而是直接让开发人员接触Kubernetes,这不仅是为了增加他们对技术的舒适度,也是为了提高开发人员的速度,因为他们现在完全知道自己的应用程序将如何运行。

当涉及到开发时,集群就像开发人员的机器一样个人化。你永远不知道你的同事在做什么或测试什么,所以你要确保他们所做的一切不会影响你。这是一个使用许多小型集群的经典示例,但它也是一个好的开发人员体验如何提高成本的示例。

虚拟集群是一种在保持低成本的同时保持开发人员高体验和高速度的方法。现在你明白了为什么需要它,是时候了解它是如何工作的了。下面,你可以看到流行的工具vcluster如何实现虚拟集群。

图片

底部可以看到Host Cluster。这是在EKS、GKE、AKS中运行的集群,或者运行Kubernetes的任何地方。这是一个标准集群。除此之外,还有kube-system命名空间。同样,这是完全标准的,到目前为止还没有虚拟的。上面有ns-1和ns-2命名空间,虚拟部分出现。它们位于kube-system命名空间内。

创建虚拟集群时,可以使用现有命名空间,也可以创建新命名空间。通常,你正在创建一个新的。然后,这个命名空间将包含几个pod。这些pod包含一个“新”集群,你可以连接到该集群。这个“新”集群拥有自己的API服务器,这意味着你可以将其作为自己的集群进行交互。

当要使用虚拟集群时,只需运行vcluster connect命令即可,这将导致两件事。它将开始端口转发到虚拟集群内API服务器的端口,并将创建一个kubeconfig.yaml文件。你可以将其与kubectl一起使用,在现在的虚拟集群中执行命令。

节约成本

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

首先,你将节省控制平面的成本。节省的费用将取决于正在运行的集群数量。如果在GKE上运行,那么每个要替换的集群每月将节省73美元。除此之外,你还可以从以前分离的资源中节省资金,这些资源现在可以共享。像负载均衡器这样的东西现在可以共享,而不是为每个集群付费。

第二个节省成本的好处来自动态扩展Kubernetes集群的能力。Kubernetes的自动缩放绝非新鲜事;事实上,这是使用Kubernetes的最大卖点之一。然而,自动调整实际使用集群的数量并不是Kubernetes所固有的。使用虚拟集群,你可以在几秒钟内启动和处理集群,允许每个开发人员拥有多个集群或没有集群,这取决于在任何时间点需要什么。

通过关闭未使用的集群来节省成本是有效的,但也很难管理。特别是如果它是非常动态的,比如当开发者回家时关闭它,当他们第二天回到办公室时启动它。这有可能,但也存在一些问题。首先,这很烦人。其次,毫无疑问,有时开发人员会忘记关闭未使用的集群。开发人员可能会被一个bug分散注意力,或者在回家的时候忘记了例行程序中的这一步。

不过,这并不是说这个原则不能有效地使用。使用Loft的睡眠模式,集群可以在一段时间没有使用后自动进入睡眠状态。这样你可以节省高达76%的Kubernetes开支。

建立虚拟集群

下面是一个虚拟机器快速入门指南。如果你想要更详细的说明,可以查看官方文档(https://www.vcluster.com/docs/getting-started/setup?utm_source=thenewstack&utm_medium=website&utm_campaign=platform)。不过,设置vclusters实际上和这里介绍的一样简单。

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

$ curl -s -L “https://github.com/loft-sh/vcluster/releases/latest” | \

sed -nE ‘s!.*”([^”]*vcluster-linux-amd64)”.*!https://github.com\1!p’ | \

xargs -n 1 curl -L -o vcluster && chmod +x vcluster && \

sudo mv vcluster /usr/local/bin

安装CLI后,可以使用vcluster create <vcluster-name> -n <host-namespace>语法创建虚拟集群。像这样:

$ vcluster create vcluster1 n hostnamespace1

现在,你已经拥有了自己的虚拟集群,可以通过运行vcluster connect vcluster-1 -n host-namespace-1连接到该集群。你不需要做更多就可以开始,现在你正在使用新创建的集群。

结论

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

原文链接:

Kubernetes: Saving Cost with Virtual Clusters

  • 分享到:
  • icon
  • icon
  • icon
  • icon
箭头