Configuración del Horizontal Pod Autoscaling (HPA)
Esta pagina detalla la configuración del sistema de autoscaling para los pods. El autoscaling permite ajustar dinamicamente el numero de pods según la carga (CPU y RAM).
Requisitos técnicos
Para que el HPA funcione, deben cumplirse las condiciones siguientes:
Metrics-server: debe estar instalado en el cluster (para exponer las metricas
cpuymemory).Resource Requests: sus pods deben tener
requestsylimitsde CPU/RAM definidos. El calculo del porcentaje se basa en estos valores. Se definen valores por defecto para los pods de Cyberwatch, pero pueden ajustarse en el archivovalues.yml.
Ejemplo de implementación
Copie esta configuración en su archivo values.yml para activar el autoscaling:
autoscaling:
# Activa o desactiva el autoscaling de recursos para el cluster
enabled: true
targets:
- name: sidekiq-node
minReplicas: 1 # Numero de pods mantenidos en vida incluso sin actividad
maxReplicas: 5 # Limite del numero de pods que el autoscaling puede crear
targetCPUUsage: 70 # Desencadena un nuevo pod si la media de uso de CPU supera el 70%
targetRAMUsage: 80 # Desencadena un nuevo pod si la media de uso de RAM supera el 80%
- name: container-scanner
minReplicas: 1
maxReplicas: 10
targetCPUUsage: 70
targetRAMUsage: 80
Volumen de trabajo del pod container-scanner
El pod container-scanner descarga las imágenes a analizar en un volumen de trabajo, cuyo tamaño se define en el campo containerScanner.cacheStorageSize (40Gi por defecto).
Con la versión 0.6.10 del chart Helm, cada pod container-scanner dispone de su propio volumen, creado y eliminado con el pod, cuando se cumplen las dos condiciones siguientes:
container-scannerforma parte de los objetivos del autoscaling, ocontainerScanner.replicaCountes mayor que 1;- el campo
global.storageClassestá definido.
El espacio de almacenamiento necesario se multiplica por el número de pods. Si la reclaimPolicy del StorageClass vale Retain, los volúmenes de los pods eliminados se conservan y deben eliminarse manualmente.
Utilizar un volumen compartido
También es posible compartir un mismo volumen entre todos los pods container-scanner, indicando un PersistentVolumeClaim existente en el archivo values.yml:
containerScanner:
existingClaim: nom-du-pvc
Para que los pods puedan ejecutarse en varios nodos, este volumen debe estar en ReadWriteMany.
El análisis de las imágenes se basa en Buildah en modo rootless, cuyo soporte de los sistemas de archivos de red (NFS, CephFS, SMB) es limitado. La mayoría de los volúmenes ReadWriteMany se basan en estos sistemas de archivos. Según el almacenamiento utilizado, los pods pueden arrancar aunque los análisis de imágenes fallen. Verifique que un análisis de imagen se completa antes de generalizar esta configuración.