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.

pedro_sland
fonte
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
Camil
fonte
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

jdf
fonte
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>
Joseph Lust
fonte
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
Kamran
fonte
0

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

Veja a imagem

Borja Garcia
fonte