Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

321
Vistas
Escalado basado en el tiempo con Kubernetes CronJob: cómo evitar que las implementaciones anulen minReplicas

Tengo un HorizontalPodAutoscalar para escalar mis pods según la CPU. El minReplicas aquí se establece en 5 :

 apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: myapp-web spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: myapp-web minReplicas: 5 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50

Luego agregué trabajos de Cron para escalar hacia arriba o hacia abajo mi escalador automático de pod horizontal según la hora del día:

 kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: namespace: production name: cron-runner rules: - apiGroups: ["autoscaling"] resources: ["horizontalpodautoscalers"] verbs: ["patch", "get"] --- kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: cron-runner namespace: production subjects: - kind: ServiceAccount name: sa-cron-runner namespace: production roleRef: kind: Role name: cron-runner apiGroup: rbac.authorization.k8s.io --- apiVersion: v1 kind: ServiceAccount metadata: name: sa-cron-runner namespace: production --- apiVersion: batch/v1beta1 kind: CronJob metadata: name: django-scale-up-job namespace: production spec: schedule: "56 11 * * 1-6" successfulJobsHistoryLimit: 0 # Remove after successful completion failedJobsHistoryLimit: 1 # Retain failed so that we see it concurrencyPolicy: Forbid jobTemplate: spec: template: spec: serviceAccountName: sa-cron-runner containers: - name: django-scale-up-job image: bitnami/kubectl:latest command: - /bin/sh - -c - kubectl patch hpa myapp-web --patch '{"spec":{"minReplicas":8}}' restartPolicy: OnFailure ---- apiVersion: batch/v1beta1 kind: CronJob metadata: name: django-scale-down-job namespace: production spec: schedule: "30 20 * * 1-6" concurrencyPolicy: Forbid successfulJobsHistoryLimit: 0 # Remove after successful completion failedJobsHistoryLimit: 1 # Retain failed so that we see it jobTemplate: spec: template: spec: serviceAccountName: sa-cron-runner containers: - name: django-scale-down-job image: bitnami/kubectl:latest command: - /bin/sh - -c - kubectl patch hpa myapp-web --patch '{"spec":{"minReplicas":5}}' restartPolicy: OnFailure

Esto funciona muy bien, excepto que ahora, cuando lo implemento, sobrescribe este valor de minReplicas con minReplicas en la especificación HorizontalPodAutoscaler (en mi caso, está configurado en 5)

Estoy implementando mi HPA usando kubectl apply -f ~/autoscale.yaml

¿Hay alguna manera de manejar esta situación? ¿Necesito crear algún tipo de lógica compartida para que mis scripts de implementación puedan determinar cuál debería ser el valor de minReplicas? ¿O hay una forma más sencilla de manejar esto?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Creo que también podrías considerar las siguientes dos opciones:


Use helm para administrar el ciclo de vida de su aplicación con la función de búsqueda:

La idea principal detrás de esta solución es consultar el estado de un recurso de clúster específico (aquí HPA ) antes de intentar crearlo/recrearlo con los comandos de install / upgrade de helm .

  • Helm.sh: Documentos: Guía de plantillas de gráfico: Funciones y canalizaciones: Uso de la función de búsqueda

Me refiero a verificar el valor actual minReplicas cada vez antes de actualizar su pila de aplicaciones.


Administre el recurso HPA por separado para los archivos de manifiesto de la aplicación

Aquí puede transferir esta tarea a un operador HPA dedicado, que puede coexistir con sus CronJobs que ajustan minReplicas según un cronograma específico:

  • Banzaicloud.com: Blog: Operador K8S HPA
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda