System Administration
medium

System Administration Question #019e3a4f

Question Statement
System Administration
#cronjob
#kubernetes
#job
#controller
Medium

Um CronJob está agendado para ser executado por um usuário a cada uma hora. O que acontece no cluster quando chega a hora de este CronJob ser executado?

A

O Kubelet observa o API Server em busca de objetos CronJob. Quando é hora de um Job ser executado, ele executa o Pod diretamente.

B

O Kube-scheduler observa o API Server em busca de objetos CronJob, e é por isso que é chamado de kube-scheduler.

C

O componente CronJob controller cria um Pod e espera até que ele termine para executar.

D

O componente CronJob controller cria um Job. Então o Job controller cria um Pod e espera até que ele termine para executar.

Correct

Official Explanation / Community Explanations

O comportamento correto é que o CronJob controller cria um objeto Job, e então o Job controller cria um Pod para executar a tarefa. O CronJob controller é responsável por gerenciar o agendamento e criar objetos Job nos horários especificados. Cada Job representa uma única execução da tarefa. O Job controller então cria um ou mais Pods para completar o Job, e garante que o Pod seja executado até a conclusão. O CronJob controller não cria Pods diretamente; ele depende do Job controller para lidar com a criação e o ciclo de vida dos Pods.

Como funciona:

  • O CronJob controller observa os recursos CronJob no API server. Quando o horário agendado chega, ele cria um objeto Job baseado no modelo de job do CronJob.
  • O Job controller, que observa objetos Job, então cria um Pod (ou vários Pods para jobs paralelos) para executar o comando especificado no modelo do Job.
  • O Job controller monitora o Pod até que ele termine com sucesso ou falhe, e pode repetir de acordo com o limite de backoff.
  • O CronJob controller não espera o Job completar; ele apenas cria o Job e segue para o próximo horário agendado.

Por que a opção correta está certa:
A afirmação "O componente CronJob controller cria um Job. Então o Job controller cria um Pod e espera até que ele termine para executar" descreve com precisão o processo de duas etapas: CronJob -> Job -> Pod. O Job controller espera o Pod terminar, o que faz parte de sua responsabilidade de garantir que o Job seja concluído.

Por que as opções incorretas estão erradas:

  • A afirmação "O Kubelet observa o API Server em busca de objetos CronJob. Quando é hora de um Job ser executado, ele executa o Pod diretamente" está incorreta porque o Kubelet não observa objetos CronJob. O Kubelet é um agente que executa em cada nó e gerencia os Pods atribuídos àquele nó. Ele não cria Pods baseados em CronJobs; ele apenas executa Pods que foram agendados para seu nó pelo scheduler.
  • A afirmação "O Kube-scheduler observa o API Server em busca de objetos CronJob, e é por isso que é chamado de kube-scheduler" está incorreta. O kube-scheduler é responsável por atribuir Pods a nós, não por gerenciar CronJobs. Seu nome vem do agendamento de Pods em nós, não do tratamento de agendamentos de CronJob.
  • A afirmação "O componente CronJob controller cria um Pod e espera até que ele termine para executar" está incorreta porque o CronJob controller não cria Pods diretamente. Ele cria objetos Job, e o Job controller lida com a criação de Pods. Além disso, o CronJob controller não espera o Pod terminar; ele apenas cria o Job e então continua monitorando o agendamento para a próxima execução.