Criação de uma tarefa cronometrada
Cenário
Uma tarefa cronometrada é executada em um cronograma repetido. Você pode executar a sincronização de tempo para todos os nós ativos em um ponto de tempo fixo.
- É executada apenas uma vez no horário especificado.
- É executada periodicamente no horário especificado.
O uso típico de uma tarefa cronometrada é o seguinte:
- Agenda as tarefas cronometradas no horário especificado.
- Cria tarefas para serem executadas periodicamente, por exemplo, backup de banco de dados e envio de e-mail.
Pré-requisitos
Os recursos foram criados. Para mais detalhes, consulte Criação de um nó.
Usar o console do CCE
- Efetue logon no console do CCE.
- Clique no nome do cluster para acessar o console do cluster, escolha Workloads no painel de navegação e clique em Create Workload no canto superior direito.
- Defina informações básicas sobre a carga de trabalho.
Basic Info
- Workload Type: selecione Cron Job. Para obter detalhes sobre os tipos de carga de trabalho, consulte Visão geral.
- Workload Name: insira o nome da carga de trabalho. Digite de 1 a 63 caracteres começando com uma letra minúscula e terminando com uma letra minúscula ou dígito. Somente letras minúsculas, dígitos e hifens (-) são permitidos.
- Namespace: selecione o namespace da carga de trabalho. O valor padrão é default. Você também pode clicar em Create Namespace para criar um. Para mais detalhes, consulte Criação de um namespace.
- Container Runtime: um cluster do CCE usa runC por padrão, enquanto um cluster do CCE Turbo suporta runC e Kata. Para obter detalhes sobre as diferenças, consulte Tempo de execução do Kata e tempo de execução comum.
Container Settings- Informações sobre o contêiner
Vários contêineres podem ser configurados em um pod. Você pode clicar em Add Container à direita para configurar vários contêineres para o pod.
- Basic Info: configure informações básicas sobre o contêiner.
Parâmetro
Descrição
Container Name
Nomeie o contêiner.
Pull Policy
Política de atualização ou extração de imagem. Se você selecionar Always, a imagem será extraída do repositório de imagens a cada vez. Se você não selecionar Always, a imagem existente do nó é usada preferencialmente. Se a imagem não existir, a imagem será extraída do repositório de imagens.
Image Name
Clique em Select Image e selecione a imagem usada pelo contêiner.
Para usar uma imagem de terceiros, consulte Uso de imagens de terceiros.
Image Tag
Selecione a tag de imagem a ser implementada.
CPU Quota
- Request: número mínimo de núcleos de CPU exigidos por um contêiner. O valor padrão é 0,25 núcleos.
- Limit: número máximo de núcleos de CPU disponíveis para um contêiner. Não deixe Limit não especificado. Caso contrário, ocorrerá um uso intensivo de recursos de contêiner e sua carga de trabalho poderá exibir um comportamento inesperado.
Se Request e Limit não forem especificados, a cota não é limitada. Para obter mais informações e sugestões sobre Request e Limit, consulte Configuração de especificações do contêiner.
Memory Quota
- Request: quantidade mínima de memória requerida por um contêiner. O valor padrão é 512 MiB.
- Limit: quantidade máxima de memória disponível para um contêiner. Quando o uso de memória exceder o limite de memória especificado, o contêiner será encerrado.
Se Request e Limit não forem especificados, a cota não é limitada. Para obter mais informações e sugestões sobre Request e Limit, consulte Configuração de especificações do contêiner.
(Optional) GPU Quota
Configurável somente quando o cluster contém nós de GPU e o complemento Suíte IA do CCE (GPU NVIDIA) está instalado.
- All: nenhuma GPU será usada.
- Dedicated: os recursos da GPU são dedicados ao contêiner.
- Shared: porcentagem de recursos de GPU usados pelo contêiner. Por exemplo, se esse parâmetro for definido como 10%, o contêiner usará 10% dos recursos da GPU.
Para obter detalhes sobre como usar GPUs no cluster, consulte Agendamento de GPU padrão no Kubernetes.
(Optional) NPU Quota
Número de chips de Ascend 310 necessários para o contêiner. O valor deve ser um número inteiro e o complemento Suíte de IA do CCE (Ascend NPU) deve ser instalado.
Para obter detalhes sobre como usar NPUs no cluster, consulte Agendamento de NPU.
(Optional) Privileged Container
Programas em um contêiner privilegiado têm certos privilégios.
Se Privileged Container estiver habilitado, os privilégios serão atribuídos ao contêiner. Por exemplo, contêineres privilegiados podem manipular dispositivos de rede na máquina host e modificar parâmetros do kernel.
(Optional) Init Container
Se usar o contêiner como um contêiner init. Um contêiner init não suporta verificação de integridade.
Um contêiner init é um contêiner especial que é executado antes que outros contêineres de aplicações em um pod sejam iniciados. Cada pod pode conter vários contêineres. Além disso, um pod pode conter um ou mais contêineres init. Os contêineres de aplicações em um pod são iniciados e executados somente após a conclusão da execução de todos os contêineres init. Para obter detalhes, consulte Contêineres init.
- (Opcional) Lifecycle: configure as operações a serem executadas em uma fase específica do ciclo de vida do contêiner, como Startup Command, Post-Start e Pre-Stop. Para mais detalhes, consulte Definição dos parâmetros do ciclo de vida do contêiner.
- (Opcional) Environment Variables: configure variáveis para o ambiente em execução do contêiner usando pares chave-valor. Essas variáveis transferem informações externas para contêineres executados em pods e podem ser modificadas de forma flexível após a implementação da aplicação. Para mais detalhes, consulte Configuração de uma variável de ambiente.
- Basic Info: configure informações básicas sobre o contêiner.
- Image Access Credential: selecione a credencial usada para acessar o repositório de imagens. O valor padrão é default-secret. Você pode usar default-secret para acessar imagens no SWR. Para obter detalhes sobre default-secret, consulte default-secret.
- (Opcional) GPU: All é selecionado por padrão. A instância da carga de trabalho será agendada para o nó do tipo de GPU especificado.
Schedule
- Concurrency Policy: os seguintes três modos são suportados:
- Forbid: uma nova tarefa não pode ser criada antes que a tarefa anterior seja concluída.
- Allow: a tarefa cronometrada permite tarefas em execução simultânea, que antecipa recursos de cluster.
- Replace: uma nova tarefa substitui a tarefa anterior quando é hora de criar uma tarefa, mas a tarefa anterior não é concluída.
- Policy Settings: especifica quando uma nova tarefa cronometrada é executada. As configurações de política no YAML são implementadas usando expressões cron.
- Uma tarefa cronometrada é executada em um intervalo fixo. A unidade pode ser minuto, hora, dia ou mês. Por exemplo, se uma tarefa cronometrada é executada a cada 30 minutos e a expressão cron correspondente é */30 * * * *, o tempo de execução começa a partir de 0 no intervalo de unidades, por exemplo, 00:00:00, 00:30:00, 01:00:00 e ....
- A tarefa cronometrada é executada em um horário fixo (por mês). Por exemplo, se uma tarefa cronometrada é executada às 00:00 no primeiro dia de cada mês, a expressão cron é 0 0 1 */1 *, e o tempo de execução é ****-01-01 00:00:00, ****-02-01 00:00:00 e ....
- A tarefa cronometrada é executada por semana. Por exemplo, se uma tarefa cronometrada é executada às 00:00 todas as segundas-feiras, a expressão cron é 0 0 * * 1, e o tempo de execução é ****-**-01 00:00:00 on Monday, ****-**-08 00:00:00 on Monday e ....
- Custom Cron Expression: para obter detalhes sobre como usar expressões cron, consulte CronJob.
- Se uma tarefa cronometrada for executada em um horário fixo (por mês) e o número de dias em um mês não existir, a tarefa cronometrada não será executada neste mês. Por exemplo, a execução saltará fevereiro se a data estiver definida como 30.
- Devido à definição de cron, o período fixo não é um período rigoroso. O intervalo de unidades de tempo é dividido de 0 por período. Por exemplo, se a unidade é minuto, o valor varia de 0 a 59. Se o valor não puder ser dividido exatamente, o último período será redefinido. Portanto, um período preciso pode ser representado somente quando o período pode ser dividido igualmente.
Tome como exemplo uma tarefa cronometrada que é executada por hora. Como /2, /3, /4, /6, /8 e /12 podem dividir exatamente 24 horas, um período preciso pode ser representado. Se outro período for usado, o último período será reiniciado no início de um novo dia. Por exemplo, se a expressão cron é * */12 * * *, o tempo de execução é 00:00:00 e 12:00:00 todos os dias. Se a expressão cron é * */13 * * *, o tempo de execução é 00:00:00 e 13:00:00 todos os dias. Às 00:00 do dia seguinte, o tempo de execução é atualizado mesmo que o período não atinja 13 horas.
- Job Records: você pode definir o número de tarefas que são executadas com êxito ou que não são executadas. Definir um limite para 0 corresponde a manter nenhum dos trabalhos depois de concluídos.
(Opcional) Advanced Settings- Labels and Annotations: adicione rótulos ou anotações para pods usando pares chave-valor. Depois de inserir a chave e o valor, clique em Confirm. Para obter detalhes sobre como usar e configurar rótulos e anotações, consulte Rótulos e anotações.
- Network configuration:
- limitação de largura de banda de entrada/saída do pod: Você pode definir a limitação de largura de banda de entrada/saída para pods. Para mais detalhes, consulte Configuração da limitação da taxa de QoS para acesso entre pods.
- Clique em Create Workload no canto inferior direito.
Usar o kubectl
Uma tarefa cronometrada tem os seguintes parâmetros de configuração:
- .spec.schedule: leva uma cadeia no formato Cron, por exemplo, 0 * * * * ou @hourly, como horário de programação das tarefas a serem criadas e executadas.
- .spec.jobTemplate: especifica as tarefas a serem executadas e tem o mesmo esquema de quando você está em Criação de uma tarefa usando kubectl.
- .spec.startingDeadlineSeconds: especifica o prazo para iniciar uma tarefa.
- .spec.concurrencyPolicy: especifica como tratar execuções simultâneas de uma tarefa criada pela tarefa cronometrada. As seguintes opções são compatíveis:
- Allow (valor padrão): permite tarefas em execução simultânea.
- Forbid: proíbe corridas simultâneas, pulando a próxima execução se a anterior ainda não tiver terminado.
- Replace: cancela a tarefa em execução no momento e a substitui por uma nova.
Segue-se um exemplo de tarefa cronometrada, que é guardado no ficheiro cronjob.yaml.

Em clusters v1.21 ou posterior, CronJob apiVersion é batch/v1.
Em clusters anteriores à v1.21, CronJob apiVersion é batch/v1beta1.
apiVersion: batch/v1 kind: CronJob metadata: name: hello spec: schedule: "*/1 * * * *" jobTemplate: spec: template: spec: containers: - name: hello image: busybox command: - /bin/sh - -c - date; echo Hello from the Kubernetes cluster restartPolicy: OnFailure imagePullSecrets: - name: default-secret
Execute a tarefa.
- Crie uma tarefa cronometrada.
kubectl create -f cronjob.yaml
Informação semelhante à seguinte é exibida:
cronjob.batch/hello created
- Consulte o status de execução da tarefa cronometrada:
kubectl get cronjob
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE hello */1 * * * * False 0 <none> 9s
kubectl get jobs
NAME COMPLETIONS DURATION AGE hello-1597387980 1/1 27s 45s
kubectl get pod
NAME READY STATUS RESTARTS AGE hello-1597387980-tjv8f 0/1 Completed 0 114s hello-1597388040-lckg9 0/1 Completed 0 39s
kubectl logs hello-1597387980-tjv8f
Fri Aug 14 06:56:31 UTC 2020 Hello from the Kubernetes cluster
kubectl delete cronjob hello
cronjob.batch "hello" deleted
Quando uma CronJob é excluída, as tarefas e pods relacionados são excluídos de acordo.
Operações relacionadas
Depois que uma CronJob é criada, você pode executar as operações listadas em Tabela 1.
Operação |
Descrição |
---|---|
Editar um arquivo YAML |
Clique em More > Edit YAML ao lado do nome da tarefa cronometrada para editar o arquivo YAML da tarefa cronometrada atual. |
Parar uma CronJob |
|
Excluir uma CronJob |
|