0Pricing
DevOps Bootcamp · Aula

Taints e tolerâncias

Impeça que pods sejam agendados em nós específicos usando taints e permita que determinados pods os tolerem.

Taints e tolerâncias é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de DevOps Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de DevOps Bootcamp inclui 4 aulas no total.

O que são taints?

Imagine que você tenha nós especiais no seu cluster Kubernetes, talvez com hardware específico, como GPUs, ou reservados para determinadas cargas de trabalho. Você não gostaria que qualquer Pod fosse alocado neles, certo?

É aí que entram os taints! Um taint é uma propriedade aplicada a um nó que impede o agendamento de Pods nele, a menos que esses Pods explicitamente "tolerem" esse taint.

Motivos para usar taints

Os taints são extremamente úteis para gerenciar onde os Pods são executados:

  • Nós dedicados: reserve nós para equipes ou aplicativos específicos.
  • Hardware especial: isole nós com GPUs ou SSDs de alto desempenho para os Pods que precisam deles.
  • Manutenção: marque um nó para manutenção, impedindo temporariamente o agendamento de novos Pods nele.

Como funcionam os taints

Pense em um taint como uma placa de "proibida a entrada" em um nó. Um Pod só pode ignorar essa placa se tiver uma "permissão" correspondente chamada toleration.

Um taint é composto por uma chave, um valor e um efeito. Por exemplo: key=value:effect.

Entendendo os efeitos dos taints

A parte do "efeito" de um taint informa ao Kubernetes o que fazer com os Pods que não o toleram. Há três efeitos principais:

  • NoSchedule
  • PreferNoSchedule
  • NoExecute

Vamos analisar cada um.

Efeito do taint: NoSchedule

O efeito NoSchedule é o mais rígido. Se um nó tiver um taint com NoSchedule, nenhum Pod será agendado nesse nó, a menos que tenha uma toleration correspondente.

Os Pods existentes que já estejam em execução no nó NÃO são afetados por um novo taint NoSchedule.

Efeito do taint: PreferNoSchedule

PreferNoSchedule é uma versão "flexível" de NoSchedule. O Kubernetes fará o possível para evitar agendar Pods em um nó com taint, mas isso não é um requisito rígido.

Se não houver outros nós adequados, um Pod ainda poderá ser agendado em um nó com o taint PreferNoSchedule, mesmo sem uma toleration.

Efeito do taint: NoExecute

O efeito NoExecute é único porque afeta Pods *já em execução*. Se um nó tiver um taint NoExecute:

  • Pods sem uma toleration correspondente serão *imediatamente expulsos*.
  • Novos Pods sem uma toleration correspondente não poderão ser agendados.

Isso costuma ser usado para esvaziar nós ou lidar com falhas de nós.

Introdução às tolerations

Enquanto os taints são aplicados aos nós, as tolerations são aplicadas aos Pods. A toleration de um Pod permite que ele seja agendado em um nó que tenha um taint correspondente.

Sem uma toleration correspondente, um Pod não pode ser agendado (ou prefere não ser agendado) em um nó com taint.

Tolerations nos manifestos de Pods

Você define as tolerations no manifesto YAML de um Pod, na seção spec. Veja como um Pod tolera um taint com key=value:NoSchedule:

apiVersion: v1
kind: Pod
metadata:
  name: my-tolerated-pod
spec:
  containers:
  - name: nginx
    image: nginx
  tolerations:
  - key: "special-purpose"
    operator: "Equal"
    value: "gpu"
    effect: "NoSchedule"

Como taints e tolerations correspondem

Para que um Pod seja agendado em um nó com taint, sua toleration deve corresponder ao taint do nó. A correspondência envolve:

  • Chave: deve ser a mesma.
  • Valor: deve ser o mesmo se operator: Equal.
  • Efeito: deve ser o mesmo.
  • Operador: pode ser Equal ou Exists (ou seja, qualquer valor para a chave).

Uma toleration especial, key: "" operator: Exists, tolera *qualquer* taint.

Verificação rápida: taints

Um nó tem o taint env=production:NoSchedule. Qual configuração de Pod permitiria que ele fosse agendado nesse nó?

Recapitulação: taints e tolerations

Você aprendeu sobre taints e tolerations!

  • Os taints são aplicados aos nós para repelir Pods.
  • As tolerations são aplicadas aos Pods para permitir que sejam agendados em nós com taints.
  • Os principais efeitos de taint são NoSchedule, PreferNoSchedule e NoExecute.
  • As tolerations devem corresponder à chave, ao valor e ao efeito do taint para que um Pod seja agendado.

Essas ferramentas oferecem controle detalhado sobre a alocação de Pods!

Perguntas Frequentes

A aula “Taints e tolerâncias” é grátis?

Sim — o texto completo de “Taints e tolerâncias” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de DevOps Bootcamp, atualize para CoddyKit PRO. O curso de DevOps Bootcamp inclui 4 aulas no total.

O que vou aprender em “Taints e tolerâncias”?

Impeça que pods sejam agendados em nós específicos usando taints e permita que determinados pods os tolerem. Você pratica DevOps Bootcamp com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar DevOps Bootcamp?

Nenhuma experiência prévia é necessária. DevOps Bootcamp no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Taints e tolerâncias”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de DevOps Bootcamp?

Sim. Cada aula de DevOps Bootcamp inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Solicitações e limites de recursos
  2. Seletores e afinidade de nós
  3. Taints e tolerâncias
  4. Prioridade e preempção de Pods
← Voltar para DevOps Bootcamp