Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

323
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!