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:
Metrics-server: ha d’estar instal·lat al clúster (per exposar les mètriques
cpuimemory).Resource Requests: els vostres pods han de tenir definits
requestsilimitsde 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 fitxervalues.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-scannerforma part dels objectius de l’escalat automàtic, ocontainerScanner.replicaCountés superior a 1;- el camp
global.storageClassestà 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ó.