Kubernetes-HPA

HPA

Horizontal Pod Autoscaler:Pod的水平自动伸缩器。
观察Pod的CPU、内存使用率自动扩展或缩容Pod的数量。
不适用于无法缩放的对象,如DaemonSet

必须定义Requests字段,必须安装metrics-server。

resources:
  limits:
    cpu: 100m
    memory: 128Mi
  requests:
    cpu: 100m
    memory: 100Mi
$ kubectl autoscale deploy nginx --cpu-percent=20 --min=2 --max=5
horizontalpodautoscaler.autoscaling/nginx autoscaled
$ kubectl top pod
NAME                     CPU(cores)   MEMORY(bytes)   
nginx-64c5bdd48d-49r5f   30m          3Mi             
nginx-64c5bdd48d-v7nfl   22m          3Mi

当cpu已经超过了20%就进行扩容

$ kubectl get hpa
NAME    REFERENCE          TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
nginx   Deployment/nginx   26%/20%   2         5         3          16h

由两个pod扩容到了三个pod

$ kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
nginx-64c5bdd48d-49r5f   1/1     Running   0          16h
nginx-64c5bdd48d-jmbzx   1/1     Running   0          28s
nginx-64c5bdd48d-v7nfl   1/1     Running   0          16h

三个pod都能接收到请求

$ kubectl top pod
NAME                     CPU(cores)   MEMORY(bytes)   
nginx-64c5bdd48d-49r5f   9m           3Mi             
nginx-64c5bdd48d-jmbzx   10m          3Mi             
nginx-64c5bdd48d-v7nfl   14m          3Mi

待压力下去后pod又缩回最小的数量

$ kubectl top pod
NAME                     CPU(cores)   MEMORY(bytes)   
nginx-64c5bdd48d-49r5f   0m           3Mi             
nginx-64c5bdd48d-v7nfl   0m           3Mi
$ kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
nginx-64c5bdd48d-49r5f   1/1     Running   0          16h
nginx-64c5bdd48d-v7nfl   1/1     Running   0          16h
posted @ 2022-01-21 15:34  Cai_HL  阅读(23)  评论(0编辑  收藏  举报
>