Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/ Cloud Container Engine/ Perguntas frequentes/ Carga de trabalho/ Outros/ O que fazer se uma tarefa agendada não puder ser reiniciada depois de ser interrompida por um período de tempo?
Atualizado em 2025-05-23 GMT+08:00

O que fazer se uma tarefa agendada não puder ser reiniciada depois de ser interrompida por um período de tempo?

Se uma tarefa agendada for interrompida durante a execução, antes de sua reinicialização, o sistema calcula a diferença entre a última vez que a tarefa foi executada com êxito e a hora atual e compara a diferença de horário com o período da tarefa agendada multiplicado por 100. Se a diferença horária for maior que o período multiplicado por 100, a tarefa agendada não será acionada novamente. Para obter detalhes, consulte Limitações de cronJob.

Por exemplo, suponha que um cron job está definido para criar um job a cada minuto a partir das 08:30:00 e o campo startingDeadlineSeconds não está definido. Se o controlador de cron job parar de ser executado das 08:29:00 às 10:21:00, o job não será iniciado devido à diferença de horário entre 08:29:00 e 10:21:00. 00 excede 100 minutos, ou seja, o número de horários de agendamento perdidos excede 100 (no exemplo, um período de agendamento é de 1 minuto).

Se o campo startingDeadlineSeconds estiver definido, o controlador calculará o número de tarefas perdidas nos últimos x segundos (x indica o valor de startingDeadlineSeconds). Por exemplo, se startingDeadlineSeconds estiver definida como 200, o controlador contará o número de jobs perdidos nos últimos 200 segundos. Nesse caso, se o controlador de cron job parar de ser executado das 08:29:00 às 10:21:00, o job será iniciado novamente a partir das 10:22:00, porque apenas três agendamentos são perdidos nos últimos 200 segundos (no exemplo, um período de agendamento é de 1 minuto).

Solução

Configure o parâmetro startingDeadlineSeconds em um cron job. Esse parâmetro pode ser criado ou modificado somente usando kubectl ou APIs.

Exemplo YAML:

apiVersion: batch/v1
kind: CronJob
metadata:
  name: hello
spec:
  startingDeadlineSeconds: 200
  schedule: "* * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox:1.28
            imagePullPolicy: IfNotPresent
            command:
            - /bin/sh
            - -c
            - date; echo Hello
          restartPolicy: OnFailure

Se você criar um cron job novamente, poderá evitar temporariamente esse problema.