1、水平自动扩容和缩容HPA
HPA全称是 Horizontal Pod Autoscaler, 就是 Pod 水平自动伸缩,
HPA 可以基于 CPU 使用率对 replication controller、deployment 和 replicaset 中 pod 的数量进行自动扩缩容
(除 cpu 利用率外 ,也可以基于其他应用程序提供的度量指标 cu
stom metrics 进行自动扩缩容),
pod 自动缩放不适用于 无法缩放的对象,比如 DaemonSets
HPA 由 k8s API 资源和控制器实现,资源决定了控制器的行为、控制器会周期性的获取目标资源(如:平均CPU 利用率)并与目标值相比较后来调整 Pod 副本数量
创建 Deployment API 资源测试
vim php-apache.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: aminglinux/hpa-example
ports:
- containerPort: 80
resources:
limits:
cpu: 500m ##限制Pod CPU资源最多使用500m
requests:
cpu: 200m ##K8s要保证Pod使用的最小cpu资源为200m
---
apiVersion: v1
kind: Service
metadata:
name: php-apache
labels:
run: php-apache
spec:
ports:
- port: 80
selector:
run: php-apache
安装 merics-server (通过 它 才能获取到 具体的资源使用情况)
# 下载yaml文件
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml
# 修改YAML文件
vim high-availability-1.21+.yaml
将image: k8s.gcr.io/metrics-server/metrics-server:v0.6.2 修改为 image: aminglinux/metrics-server:v0.6.2
在image: 这行上面增加一行: - --kubelet-insecure-tls
##见下图
创建 HPA
vim hpa-php-apache.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: php-apache
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: php-apache
minReplicas: 1 ##最小Pod数为1
maxReplicas: 10 ##最大Pod数为10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50 ##当Pod的CPU使用率超过50%时,需要自动扩容