k8s高级调度--HPA
简绍:
通过Metrics server组件来收集pod和node上的度量指标,HPA也是通过Metrics server组件的指标来实现的水平扩缩容,HPA主要通过观察Metrics server上报的数据来做出相应的扩容或者缩容动作,扩缩容指标为CPU和内存使用率
验证:
创建deploy资源测试
kind: Deployment metadata: name: nginx-deployment-basic labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: # nodeSelector: # env: test-team containers: - name: nginx image: nginx:1.7.9 # replace it with your exactly <image_name:tags> ports: - containerPort: 80 resources: limits: cpu: "500m" requests: cpu: "10m"
创建svc
kubectl expose deployment nginx-deployment-basic --port 80
创建HPA
kubectl autoscale deploy nginx-deployment-basic --cpu-percent=10 --min=1 --max=10 #--cpu-percent 超过指标的百分比会触发扩容,上述参数表示cpu超过10%会触发扩容,最小扩容1个pod,最大扩容10个pody
查看HPA状态
压测验证:
观察hpa的状态和pod的数量
pod扩容触发正常,在配置hpa的时候,也需要关注k8s集群的资源使用情况,保证pod触发hpa后资源池足够运行扩容的资源,pod状态pending,大概率是资源不足导致的,
停掉压测循环看下缩容情况
稍等几分钟会pod副本会缩容到hpa的min副本数,刚开始创建deploy的时候我们配置的是俩个副本,所以,hpa资源的最小副本数要根据线上环境所需的副本数来配置