Configuració de l’Horizontal Pod Autoscaling (HPA)

Aquesta pàgina detalla la configuració del sistema d’escalat automàtic (autoscaling) dels pods. L’escalat automàtic permet ajustar dinàmicament el nombre de pods en funció de la càrrega (CPU i RAM).

Requisits tècnics

Perquè l’HPA funcioni, s’han de complir les condicions següents:

  1. Metrics-server: ha d’estar instal·lat al clúster (per exposar les mètriques cpu i memory).

  2. Resource Requests: els vostres pods han de tenir definits requests i limits de CPU/RAM. El càlcul del percentatge es basa en aquests valors. Hi ha valors per defecte definits per als pods de Cyberwatch, però es poden ajustar al fitxer values.yml.

Exemple d’implementació

Copieu aquesta configuració al vostre fitxer values.yml per activar l’escalat automàtic:

autoscaling:
  # Active ou désactive l'autoscaling des ressources pour le cluster
  enabled: true
  
  targets:
    - name: sidekiq-node
      minReplicas: 1      # Nombre de pods maintenus en vie même sans activité
      maxReplicas: 5      # Limite du nombre de pods que l'autoscaling peut créer
      targetCPUUsage: 70  # Déclenche un nouveau pod si la moyenne d'utilisation CPU dépasse 70%
      targetRAMUsage: 80  # Déclenche un nouveau pod si la moyenne d'utilisation RAM dépasse 80%

    - name: container-scanner
      minReplicas: 1
      maxReplicas: 10
      targetCPUUsage: 70
      targetRAMUsage: 80

Volum de treball del pod container-scanner

El pod container-scanner baixa les imatges que cal analitzar en un volum de treball, la mida del qual es defineix al camp containerScanner.cacheStorageSize (40Gi per defecte).

Amb la versió 0.6.10 del chart de Helm, cada pod container-scanner disposa del seu propi volum, que es crea i se suprimeix amb el pod, quan es compleixen les dues condicions següents:

  • container-scanner forma part dels objectius de l’escalat automàtic, o containerScanner.replicaCount és superior a 1;
  • el camp global.storageClass està definit.

L’espai d’emmagatzematge necessari es multiplica pel nombre de pods. Si la reclaimPolicy de la StorageClass és Retain, els volums dels pods suprimits es conserven i s’han de suprimir manualment.

Utilitzar un volum compartit

També es pot compartir un mateix volum entre tots els pods container-scanner indicant un PersistentVolumeClaim existent al fitxer values.yml:

containerScanner:
  existingClaim: nom-du-pvc

Perquè els pods es puguin executar en diversos nodes, aquest volum ha de ser ReadWriteMany.

L’anàlisi de les imatges es basa en Buildah en mode rootless, que té una compatibilitat limitada amb els sistemes de fitxers de xarxa (NFS, CephFS, SMB). La majoria dels volums ReadWriteMany es basen en aquests sistemes de fitxers. Segons l’emmagatzematge utilitzat, els pods es poden iniciar tot i que les anàlisis d’imatges fallin. Comproveu que una anàlisi d’imatge acaba correctament abans de generalitzar aquesta configuració.