k8s高级调度--HPA

发布时间 2023-05-29 11:41:54作者: 过去都是浮云

简绍:

通过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资源的最小副本数要根据线上环境所需的副本数来配置