orizontal Pod Autoscaler(HPA)
Pod自动扩容:可以根据cpu使用率或自定义指标(metrics)自动对Pod进行扩/缩容
-
控制管理器每隔30s(可以通过 -horizontal-pod-autoscaler-sync-period修改)查询metrics的资源使用情况
-
支持3中metrics类型
-
预定义metrics(比如pod的cpu)以利用率的方式计算
-
自定义的Pod metrics,以原始值(raw value)的方式计算
-
自定义的object metrics
-
-
支持两种metrics查询方式:heapster和自定义的REST API
-
支持多metrics
通常用于Deployment ,不适用于无法扩/缩容的对象,比如DaemonSet
0、开启指标服务
# 下载 metrics-server 组件配置文件
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml -O metrics-server-components.yaml
# 修改镜像地址为国内的地址
sed -i 's/k8s.gcr.io\/metrics-server/registry.cn-hangzhou.aliyuncs.com\/google_containers/g' metrics-server-components.yaml
# 修改容器的 tls 配置,不验证 tls,在 containers 的 args 参数中增加 --kubelet-insecure-tls 参数
# 安装组件
kubectl apply -f metrics-server-components.yaml
# 查看 pod 状态
kubectl get pods --all-namespaces | grep metrics
2、CPU、内存指标监控
实现CPU、内存指标的监控,首先要有一个前提条件是该对象必须配置了resources.requests.cpu 或 resources.requests.memory 才可以,可以配置 cpu.memory达到上述配置的百分比后进行扩容或缩容
创建一个HPA:
1、先准备好一个有做资源限制的depLoyment
2、执行命令 kubectl autoscale deploy <deployment名称> --cpu-percent=20 --min=2 --max=5
3、通过 kubect get hpa 可以获取HPA信息
2、自定义metrics(一般不用)
1、控制器开启 -horizontal-pod-autoscaler-use-rest-clients
2、控制管理器的-apiserver指向API Server Aggregator
3、在API Server Aggregator中注册自定义的metrics API