Kubernetes – 自动伸缩(弹性伸缩)

所谓弹性伸缩是指,Kubernates可以根据用户流量,自动增加或减少服务能力。

Kubernates中,通常可以通过调整pod或node的数量来调整服务能力。

pod

对于某个应用程序,假设正在运行X个pod,如果请求数量超过了X个pod所能处理的数量,该应用程序就需要扩展更多副本。

这里假设节点的资源是足够的,只需扩展Pod数量。

Node

集群容量是指集群中所有节点的容量。如果工作负载超出了全部节点的容量,则必须向集群添加节点,并确保可以有效地调度和执行工作负载。

如果pod继续扩展,在某个时候节点可用的资源将耗尽,就必须添加更多节点,来增加集群级别可用的整体资源。

弹性伸缩的时机

要进行弹性伸缩,必须监测某些指标,当超过指标阈值时,执行伸缩操作。

例如,可以监测CPU负载,然后在CPU负载超过80%时,触发一个伸缩操作。

对于不同服务类型,指标也可能不同,甚至需要多个指标。例如,比较耗内存的服务,可能需要检测内存消耗指标;消息队列服务,可能需要监测未处理消息数量。

同样的,当流量下降时,也需要能够减少资源,并且不影响正在处理的现有请求。

怎么进行伸缩

对于pod,只需更改副本控制器中的副本数量就足够了。

对于节点,应该有一种方法来调用云提供商(例如阿里云)的API,创建一个新实例,并使其成为集群的一部分 — 这是一种相对比较复杂的操作,可能会花费更多的时间。

集群弹性伸缩器

在Kubernetes中,集群弹性伸缩器(Cluster autoscaler)用于动态地伸缩集群(节点)。

集群弹性伸缩器监测Pod的伸缩情况,如果Pod由于节点资源限制,不能再扩展了,就需要调整节点数量。

调整节点数量,需要调用云供应商的API。创建节点的时间可能需要一分钟或更长,取决于云供应商。

对于减少节点,集群弹性伸缩器提供了一种优雅地终止节点的方法,不会影响现有请求的处理。

水平Pod弹性伸缩器

水平Pod弹性伸缩器(Horizontal Pod Autoscaler/HPA)可以自动调整Pod数量。

水平Pod弹性伸缩器可以设置监测指标,Pod副本数量调整的上限、下限。

与所有API资源一样,kubectl以标准方式支持水平Pod弹性伸缩器。

可以使用kubectl create命令创建HPA对象:

kubectl autoscale rs foo --min=2 --max=5 --cpu-percent=80

监测指标是CPU利用率,设置为80%,副本数量上下限设置为2到5个。

查询HPA:

kubectl get hpa


浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载