k8s学习记录,HPA(十一)

文章中资料参考来源2022 云原生Kubernetes全栈架构师

水平自动扩容HPA【Horizontal Pod Autoscaler】将流量分配到更多的节点上去

  • 通过监听Pod的内存或者CPU使用率,达到警告值时来进行自动扩容

HPA v1为稳定版自动水平伸缩,只支持CPU指标

v2为beta版本,分为v2beta1和v2beta2

1、beta1:支持CPU、内存和自定义指标

2、beta2:支持CPU、内存、自定义指标Custom和额外指标ExternalMetrics

kubectl get  apiservices | grep auto

#创建一个deploy  hpa-nginx,【dry-run=client表示创建后但是不启动】 【-oyaml > hpa-nginx.yaml表示以yaml方式打开配置文件并重定向至文件hpa-nginx.yaml中】
kubectl create deploy hpa-nginx --image=nginx:1.15.3 --dry-run=client -oyaml > hpa-nginx.yaml

#打开yaml文件,在resources下面添加requests节点,cpu: 10m
spec:
      containers:
      - image: nginx:1.15.3
        name: nginx
        resources:
          requests:
            cpu: 10m

#根据文件创建deploy
kubectl create -f hpa-nginx.yaml

#暴露deploy的端口
kubectl expose deploy hpa-nginx --port=80

#自动扩容deploy nginx-server    监控cpu大于10%就进行扩容,最小1个副本,最大10个副本
kubectl autoscale deployment hpa-nginx --cpu-percent=10 --min=1 --max=10

kubectl get hpa
#如果HPA管理的deploy对应的Pod,有重复的label,那么有可能获取不到targets,一直显示unknown

新开终端,使用死循环访问nginx,模拟访问nginx

while true; do wget -q -O- http://10.96.0.61 > /dev/null; done

当停止访问后,hpa监控的CPU值下降后,pod会自动进行缩容

  1. 必须安装metrics-server或其他自定义metrics-server
    2.必须配置requests参数
    3.不能扩容无法缩放的对象,比如DaemonSet
    4.后端一般不做hpa

【5月31日看到一篇文章介绍优化k8s横向扩容HPA的文章,觉得不错,mark一下】

优化Kubernetes横向扩缩HPA

posted @ 2021-05-16 20:44  Hei蛋炒饭  阅读(183)  评论(0编辑  收藏  举报