首页 > kubernetes(k8s) > 资源控制器Horizontal Pod Autoscaling
2019
11-19

资源控制器Horizontal Pod Autoscaling

Horizontal Pod Autoscaling(HPA)可以根据 CPU 利用率自动伸缩一个 Replication Controller、Deployment 或者 Replica Set 中的 Pod 数量

Horizontal Pod Autoscaling 可以根据 CPU 利用率自动伸缩一个 Replication Controller、Deployment 或者Replica Set 中的 Pod 数量

实测:

准备工作:

首先导入一下 hpa-example.tar镜像 这个是google专门为测试开发的一个example,利用它不断循环占用资源来测试 HAP

下载完成后导入到各个节点

导入完成后给镜像打个标签

1.启动一个php-apache的pod cpu资源请求限制为200兆

首先我们先查看下当前效果(使用如下命令如果报错,请耐心等一会,让资源加入进来)

然后我们进行HPA控制器的创建

查看当前hpa

好,需要设置的已经设置完了。下来进行压力测试

1.首先先开启一个busybox的pod

2.然后我们在这个pod里面 get 我们那个php-apache的页面让他无限的去访问

3.我们可以开个新的窗口来看他的资源

当前已经增加到了9个pod,我们设置的最大10个,机器太卡所以我结束掉了请求

由此可见:可以看到只要php-apachepod的负载大于40% 就会创建一个新的pod副本来分担其压力

2.减小负载(关掉busybox pod),查看是否回收

负载cpu压力已经降下来了

等待pod回收,等啊等,睡觉了…

早上起来

可以看到已经回收至1个pod

为什么回收这么慢呢?回收特别慢是很合理的。它怕突然又来大压力把pod给挤死

目前的hpa的稳定版,仅支持cpu和内存去进行所谓的扩容缩。那么以后肯定会有以网络啊 磁盘io 来加入到扩容缩当中来。

资源限制 – Pod

Kubernetes 对资源的限制实际上是通过 cgroup 来控制的,cgroup 是容器的一组用来控制内核如何运行进程的 相关属性集合。针对内存、CPU 和各种设备都有对应的 cgroup

默认情况下,Pod 运行没有 CPU 和内存的限额。 这意味着系统中的任何 Pod 将能够像执行该 Pod 所在的节点一 样,消耗足够多的 CPU 和内存 一般会针对某些应用的 pod 资源进行资源限制,这个资源限制是通过 resources 的 requests 和 limits 来实现

资源限制 – 名称空间 (基于命名空间(配置更广泛 针对整个命名空间))

1.计算资源配额

2.配置对象数量配额限制

3.我怎么设置一个pod里能够使用资源的默认值呢?

配置默认值,避免oom (配置 CPU 和 内存 LimitRang)

默认分配一个pod 1G内存 1个cpu 如果你觉得不够用 最大分配给你 5个cpu 50G内存

最后编辑:
作者:shooter
这个作者貌似有点懒,什么都没有留下。