escalado automático de pod

Ejemplo de HPA

Referencia La
cantidad de pods en ReplicationController, Deployment, ReplicaSet o StatefulSet se puede escalar automáticamente según el uso de la CPU
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

# 运行 php-apache 服务器并暴露服务
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: hpa-example
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: 500m
          requests:
            cpu: 200m
---
apiVersion: v1
kind: Service
metadata:
  name: php-apache
  labels:
    run: php-apache
spec:
  ports:
  - port: 80
  selector:
    run: php-apache

创建 Horizontal Pod Autoscaler
HPA 将(通过 Deployment)增加或者减少 Pod 副本的数量以保持所有 Pod 的平均 CPU 利用率在 50% 左右(由于每个 Pod 请求 200 毫核的 CPU,这意味着平均 CPU 用量为 100 毫核)
kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
kubectl get hpa

Inserte la descripción de la imagen aquí

增加负载
启动一个容器,并通过一个循环向 php-apache 服务器发送无限的查询请求
kubectl run -i --tty load-generator --rm --image=busybox --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"
容器内存使用到达上限,开始扩容,Hpa会根据Pod的CPU使用率动态调节Pod的数量

Inserte la descripción de la imagen aquí

停止负载
终止load-generator 

Inserte la descripción de la imagen aquí
1.Proceso de expansión de
HPA : recopile todo el Pod HPA bajo el control del uso reciente de la CPU (utilización de la CPU)
Límite de CPU comparativo (CPUUtilización) en la condición de expansión de
las instancias de ajustes registrados (que deben cumplirse sin exceder el número máximo de instancias mínimas / instancias)
cada 30 segundos para hacer un juicio de expansión automático
El método de cálculo de la utilización de la CPU es usar el uso de la CPU (el promedio del último minuto, que se puede obtener directamente a través de métricas) dividido por la solicitud de la CPU (aquí la solicitud de la CPU es el núcleo del uso de la CPU que cuando creamos el contenedor Number) para obtener un valor promedio, que puede entenderse como: el porcentaje promedio de uso del núcleo de CPU de cada pod.
2. Algoritmo de escala de HPA:
fórmula de cálculo: TargetNumOfPods = ceil (sum (CurrentPodsCPUUtilization) / Target)
ceil () significa tomar el número entero más cercano mayor o igual a un cierto número
y enfriar durante 3 minutos después de cada expansión, y luego expandir nuevamente, mientras se encoge Tienes que esperar 5 minutos después.
Cuando la tasa de uso actual de la CPU de Pod está cerca de la tasa de uso objetivo, no se activará la expansión o la reducción:
Condición de activación: avg (CurrentPodsConsumption) / Target> 1.1 o <0.9
Inserte la descripción de la imagen aquí

# 多项度量指标
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: php-apache
spec:
  maxReplicas: 10
  minReplicas: 1
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        averageUtilization: 60
        type: Utilization
  - type: Resource
    resource:
      name: memory
      target:
        averageValue: 50Mi
        type: AverageValue

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_49564346/article/details/114314746
Recomendado
Clasificación