HPA 自动更新工作负载资源(例如 Deployment 或者 StatefulSet), 目的是自动扩缩工作负载以满足需求。
水平扩缩意味着对增加的负载的响应是部署更多的 Pod。这与 “垂直(Vertical)” 扩缩不同,对于 Kubernetes, 垂直扩缩意味着将更多资源(例如:内存或 CPU)分配给已经为工作负载运行的 Pod。
如果负载减少,并且 Pod 的数量高于配置的最小值, HPA 会指示工作负载资源(Deployment、StatefulSet 或其他类似资源)缩减。
使用HPA前提是需要安装metrics server来获取资源指标
1.1 基于CPU资源HPA
首先启动一个 Deployment 用 hpa-example 镜像运行一个容器
[root@k8s-master01 hpa]# cat hpa-example.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: php-apache
spec:
selector:
matchLabels:
run: php-apache
replicas: 1
template:
metadata:
labels:
run: php-apache
spec:
containers:
- name: php-apache
image: hub.kce.ksyun.com/leoxinyuan/hpa-example:latest
ports:
- containerPort: 80
resources:
limits:
cpu: 500m
requests:
cpu: 200m
---
apiVersion: v1
kind: Service
metadata:
name: php-apache
labels:
run: php-apache
spec:
ports:
- port: 80
selector:
run: php-apache
[root@k8s-master01 hpa]# kubectl apply -f hpa-example.yaml
deployment.apps/php-apache created
service/php-apache created
[root@k8s-master01 hpa]# kubectl get po | grep php
php-apache-6585f85cff-vfmgr 1/1 Running 0 3m18s
1.1.1 创建HPA
-
使用命令创建
使用 kubectl
创建自动扩缩器。kubectl autoscale
子命令是 kubectl
的一部分。
HPA 控制器将根据设定的CPU 利用率