mise à l'échelle automatique du pod

Exemple HPA

Référence Le
nombre de pods dans ReplicationController, Deployment, ReplicaSet ou StatefulSet peut être automatiquement mis à l'échelle en fonction de l'utilisation du processeur
Insérez la description de l'image ici
Insérez la description de l'image ici

# 运行 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

Insérez la description de l'image ici

增加负载
启动一个容器,并通过一个循环向 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的数量

Insérez la description de l'image ici

停止负载
终止load-generator 

Insérez la description de l'image ici
Processus d'expansion 1.HPA:
Collectez tous les Pod HPA sous le contrôle de l'utilisation récente du processeur (utilisation du processeur)
Limite de processeur comparative (CPUUtilization) dans la condition d'expansion des
instances d'ajustements enregistrées (qui doivent être satisfaites sans dépasser le nombre maximum de minimum / instance)
chaque 30s pour faire un jugement d'expansion automatique
La méthode de calcul de l'utilisation du processeur consiste à utiliser l'utilisation du processeur (la moyenne de la dernière minute, qui peut être directement obtenue via des métriques) divisée par la demande du processeur (ici, la requête du processeur est le cœur de l'utilisation du processeur que nous fait lorsque nous avons créé le conteneur Number) pour obtenir une valeur moyenne, qui peut être comprise comme: le pourcentage moyen d'utilisation du cœur du processeur de chaque pod.
2. Algorithme de mise à l'échelle HPA:
formule de calcul: TargetNumOfPods = ceil (sum (CurrentPodsCPUUtilization) / Target)
ceil () signifie prendre l'entier le plus proche supérieur ou égal à un certain nombre
et refroidir pendant 3 minutes après chaque expansion, puis agrandir à nouveau, en rétrécissant Vous devez attendre 5 minutes plus tard.
Lorsque le taux d'utilisation actuel du Pod Cpu est proche du taux d'utilisation cible, l'expansion ou la réduction ne sera pas déclenchée:
Condition de déclenchement: avg (CurrentPodsConsumption) / Target> 1,1 ou <0,9
Insérez la description de l'image ici

# 多项度量指标
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

Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/qq_49564346/article/details/114314746
conseillé
Classement