Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

331
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda