Kubeless 如何基于 CPU 自动伸缩? | 玩转 Kubeless
自动伸缩是 Serverless 的最大卖点之一。
Kubless 的自动伸缩功能基于 Kubernetes 的 HPA(HorizontalPodAutoscaler)功能实现。
目前,kubeless 中的函数支持基于 cpu 和 qps 这两种指标进行自动伸缩。
本文将演示基于 cpu 指标进行自动伸缩。
环境说明
操作系统:macOS
Kubernetes 版本:v1.15.5
Kubeless 版本:v1.0.7
了解如何设置 autoscale
可以先通过 kubeless 命令行了解如何使用 autoscale。
kubeless autoscale 命令帮助文档如下:
kubeless autoscale create 命令帮助文档如下:
安装 Metrics Server
要使用 HPA,就需要在集群中安装 Metrics Server 服务,否则 HPA 无法获取指标,自然也就无法进行扩容缩容。
可以使用如下命令检查是否安装了 Metrics Server,如果没有安装,那么需要安装它。
1、这里要先下载 metrics-server 的 components.yaml:
2、然后在 components.yaml 文件的 88行的 args 下面添加参数 --kubelet-insecure-tls,否则 metrics-server 启动报错:
3、最后再使用 kubectl apply 命令安装 Metrics Server:
4、再次确认 metrics-server 是否安装成功:
基于 cpu 进行自动伸缩
依旧使用那个熟悉的 Python 代码:
创建 hello 函数,加上 cpu 参数和 memory 参数,以便 HPA 可以根据 cpu 指标进行扩容缩容:
查看函数状态:
使用 kubeless 为函数 hello 创建 autoscale:
使用 kubectl proxy 创建反向代理,以便可以通过 http 访问函数:
接下来对函数进行压力测试,这里使用 ab,它是 apache 自带的压力测试工具,macOS 默认安装了 apache,直接可以使用。
使用 ab 工具进行压力测试:
使用 kubectl get hpa -w 命令观察 HPA 的状态,可以看到副本数会根据指标的大小进行变化,压力大的时候副本量会随着递增,等到压力小了副本量会递减:
使用 kubectl get pod -w 命令观察也可以看到自动伸缩时 Pod 的数量及状态变化:
参考
https://kubeless.io/docs/autoscaling/
https://github.com/mvranic/kubeless-apl-demo
https://github.com/kubernetes-sigs/metrics-server
https://stackoverflow.com/questions/54106725/docker-kubernetes-mac-autoscaler-unable-to-find-metrics
版权声明: 本文为 InfoQ 作者【donghui2020】的原创文章。
原文链接:【http://xie.infoq.cn/article/b44e6439e2dd9123c64285359】。文章转载请联系作者。
评论 (2 条评论)