Índice
3 trabalhos que são limpos automaticamente
O controlador não pode resolver o problema
DaemonSet
1 O que é DaemonSet
DaemonSet garante que todos (ou alguns) nós executem uma cópia de um pod. Quando os nós ingressarem no cluster, um pod será adicionado para eles. Esses pods também são reciclados quando um nó é removido do cluster. A exclusão de um DaemonSet excluirá todos os pods criados por ele.
Alguns usos típicos do DaemonSet:
-
Execute daemons de cluster em cada nó
-
Execute um daemon de coleta de log em cada nó
-
Execute um daemon de monitoramento em cada nó
Um uso simples é iniciar um DaemonSet em todos os nós para cada tipo de daemon. Um uso um pouco mais complexo é implantar vários DaemonSets para o mesmo tipo de daemon; cada um com sinalizadores diferentes e memória diferente, requisitos de CPU para diferentes tipos de hardware.
2 Usando o DaemonSet
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
app: nginx
name: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx:1.19
imagePullPolicy: IfNotPresent
name: nginx
resources: {}
restartPolicy: Always
Trabalho
1 O que é Trabalho
Um Job cria um ou mais Pods e continuará a repetir a execução de Pods até que o número especificado de Pods termine com sucesso. À medida que os pods são concluídos com êxito, o trabalho registra quantos pods foram concluídos com êxito. Quando o número atinge o limite de sucesso especificado, a tarefa (ou seja, trabalho) termina. A exclusão de um trabalho limpará todos os pods criados. A operação de suspensão do Job excluirá todos os pods ativos do Job até que o Job seja retomado novamente.
Em um caso de uso simples, você criaria um objeto Job para executar um pod até a conclusão de maneira confiável. O objeto Job inicia um novo Pod quando o primeiro Pod falha ou é excluído (por exemplo, devido a uma falha ou reinicialização do hardware do nó).
Você também pode usar Jobs para executar vários pods em paralelo.
2 usando Trabalho
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
spec:
containers:
- name: pi
image: perl:5.34.0
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
# 当前任务出现失败 最大的重试次数
backoffLimit: 4
3 trabalhos que são limpos automaticamente
Os trabalhos concluídos geralmente não precisam ser mantidos no sistema. Mantê-los no sistema o tempo todo coloca pressão extra no servidor da API. Se o trabalho for gerenciado por algum controlador de nível superior, como CronJob , o trabalho poderá ser limpo pelo CronJob com base em uma política de limpeza baseada em capacidade específica.
-
O mecanismo TTL do trabalho concluído
-
Outra maneira de limpar automaticamente os trabalhos concluídos (status
Complete
ouFailed
) é usar o mecanismo TTL fornecido pelo controlador TTL. Ao definir o.spec.ttlSecondsAfterFinished
campo Job, o controlador pode limpar os recursos concluídos. Quando o controlador TTL limpar o Trabalho, ele excluirá o objeto Trabalho em cascata. Em outras palavras, ele exclui todos os objetos dependentes, incluindo os próprios Pods e Jobs. Observe que, quando um Job é excluído, o sistema leva em consideração suas garantias de ciclo de vida, como seus Finalizadores.
-
apiVersion: batch/v1
kind: Job
metadata:
name: pi-with-ttl
spec:
ttlSecondsAfterFinished: 100
template:
spec:
containers:
- name: pi
image: perl:5.34.0
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
Um trabalho pi-with-ttl
pode ser excluído automaticamente 100 segundos após seu término. Se este campo for definido como 0
, o Trabalho se tornará automaticamente deletável imediatamente após sua conclusão. Se este campo não for definido, o trabalho não será automaticamente limpo pelo controlador TTL após a conclusão.
O controlador não pode resolver o problema
-
Como fornecer serviços de rede para pods
-
Como obter balanceamento de carga entre vários pods