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

199
Vistas
Trabajo cron de Kubernetes que llama a todos los pods en un servicio

tengo un netcore webapi implementado en kubernetes. Todas las noches a la medianoche necesito llamar a un punto final para realizar algunas operaciones en cada pod, por lo que implementé un cronjob que llama a la API con curl y el método realiza las operaciones requeridas.

 apiVersion: batch/v1beta1 kind: CronJob metadata: name: test-cronjob spec: schedule: "0 0 * * *" jobTemplate: spec: template: spec: containers: - name: test-cronjob image: curlimages/curl:7.74.0 imagePullPolicy: IfNotPresent command: - "/bin/sh" - "-ec" - | date; echo "doingOperation" curl POST "serviceName/DailyTask" restartPolicy: OnFailurey

Pero esto solo llama a un pod, el asignado por mi ingreso. ¿Hay alguna manera de llamar a cada pod contenido en un servicio?

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

0

Ese es un comportamiento esperado, ya que cuando hacemos curl en un objeto Service de Kubernetes, se espera que pase las solicitudes solo a uno de los endpoints (IP de los pods). Para lograr lo que necesita, debe escribir un script personalizado que primero obtenga los puntos finales asociados con los servicios y luego llame iterativamente a curl sobre ellos uno por uno.

Nota: La IP de los pods se puede cambiar debido a la recreación del pod, por lo que debe obtener los endpoints asociados con el servicio en cada ejecución del cronjob .

over 4 years ago · Santiago Trujillo Denunciar

0

Podría ejecutar kubectl dentro de su trabajo:

 kubectl get pods -l mylabel=mylabelvalue \ -o go-template='{{range .items}}{{.status.podIP}}{{"\n"}}{{end}}'

Esto devolverá la IP interna de todos los contenedores en la etiqueta específica. Luego puede recorrer las direcciones y ejecutar su comando.

over 4 years ago · Santiago Trujillo Denunciar

0

Dado que habilitar Pods con derechos en el API-Server, por ejemplo, para ver los puntos finales del servicio real, es engorroso y presenta un riesgo de seguridad, recomiendo una solución de secuencias de comandos simple aquí.

En primer lugar, instale un servicio sin interfaz para la implementación en cuestión (un servicio con clusterIP=Ninguno). Esto hará que su servidor DNS interno cree varios registros A, cada uno apuntando a una de sus IP de pod.

En segundo lugar, para hacer ping a cada Pod de forma rotativa desde su Cron-Job, emplee un pequeño script de shell como se muestra a continuación (deberá ejecutarlo desde un contenedor con dig and curl instalado):

 dig +noall +answer <name-of-headless-service>.<namespace>.svc.cluster.local | awk -F$'\t' '{curl="curl <your-protocol>://"$2":<your-port>/<your-endpoint>"; print curl}' | source /dev/stdin
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