Como posso acionar um trabalho agendado do Kubernetes manualmente?


Respostas:


186

O problema # 47538 que @jdf mencionou agora está encerrado e isso agora é possível. A implementação original pode ser encontrada aqui, mas a sintaxe mudou.

Com kubectl v1.10.1 +, o comando é:

kubectl create job --from=cronjob/<cronjob-name> <job-name>

Parece ser retrocompatível com clusters mais antigos, pois funcionou para mim na v0.8.x.


3
Certifique-se de verificar sua versão do kubectl, a partir de 5/10/18 a versão instalada via Google Cloud SDK não tem este comando disponível. gcloud components install kubectlentão kubernetes.io/docs/tasks/tools/install-kubectl
Scott Jungwirth

18

Você pode criar um trabalho simples com base em seu ScheduledJob. Se você já executa um ScheduledJob, há trabalhos no histórico.

kubectl get jobs

NAME               DESIRED   SUCCESSFUL   AGE
hello-1477281595   1         1            11m
hello-1553106750   1         1            12m
hello-1553237822   1         1            9m

Exporte um destes trabalhos:

kubectl get job hello-1477281595 -o yaml > my_job.yaml

Em seguida, edite o yaml um pouco, apagando alguns campos desnecessários e execute-o manualmente:

kubectl create -f my_job.yaml
kubectl delete -f my_job.yaml

1
Apenas uma pequena adição sobre "apagar alguns campos desnecessários". O Kubernetes está reclamando dos *uidcampos e você pode removê-los facilmente com este comandosed -i '/uid:.*/d' my_job.yaml
Aleksandr Podkutin

A suposição de que já existem empregos na história muitas vezes não se mantém.
Andrew Savinykh

9

EDITAR - Julho de 2018: veja a resposta de @pedro_sland, pois esse recurso já foi implementado

Minha resposta original abaixo permanecerá correta para as versões anteriores do kubectl anteriores à v1.10.1

========================================================== ========================

Além de criar um novo emprego (como as outras respostas sugeriram), não há uma maneira atual de fazer isso. É uma solicitação de recurso com o kubernetes agora que pode ser rastreada aqui: https://github.com/kubernetes/kubernetes/issues/47538


7

Infelizmente, nenhum dos exemplos de sintaxe acima funciona no Google Kubernetes Engine (GCP). Além disso, os próprios documentos do GKE estão errados. :(

No Kubernetes 1.10.6.gke-2, a sintaxe de trabalho é

kubectl create job <your-new-job-name> --from=cronjob/<name-of-deployed-cron-job> -n <target namespace>

incrível para solucionar problemas com resiliência de cron jobs, obrigado!
Lauksas


0

Se você quiser testar o trabalho, crie uma configuração de trabalho a partir de sua configuração Cron Job (ScheduledJob) e execute-o manualmente usando o seguinte comando:

kubectl create -f ./job.yaml

0

Existe uma opção para acionar o cron job manualmente nesta guia no painel do k8s

Veja a imagem

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.