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

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

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 Relatório

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 Relatório

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 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