Introdução
Taints e tolerâncias são usados no Kubernetes para especificar quais nós são adequados para agendar certos pods. Taints são aplicados aos nós para repelir pods, enquanto tolerâncias são aplicadas aos pods para atraí-los para nós específicos. Neste laboratório, aprenderemos como usar taints e tolerâncias para agendar pods em nós específicos.
Iniciar o Cluster Minikube
Antes de criar recursos, você precisa de um cluster Kubernetes em execução. Minikube é um ambiente Kubernetes leve que roda em sua máquina local.
Navegue para o seu diretório de trabalho:
Abra o terminal e navegue até a pasta do projeto padrão:
cd /home/labex/projectInicie o Minikube:
Inicie o Minikube para inicializar um cluster Kubernetes:
minikube start- Este comando configura um cluster Kubernetes de nó único em sua máquina local.
- O Minikube pode levar alguns minutos para iniciar, dependendo do desempenho do seu sistema.
Verifique se o Minikube está em execução:
Verifique o status do cluster Minikube:
minikube status- Procure por componentes como
kubeleteapiserverlistados comoRunning(Em execução). - Se o cluster não estiver em execução, execute novamente
minikube start.
- Procure por componentes como
Se você encontrar problemas ao iniciar o Minikube. Use minikube delete para redefinir o ambiente, se necessário.
Criando um Nó com Taint
Nesta etapa, criaremos um nó com um taint que repelirá certos pods.
Rotule um nó com um rótulo (label) personalizado:
kubectl label nodes minikube disk-type=ssdAplique o taint ao nó com o seguinte comando:
kubectl taint nodes minikube disk-type=ssd:NoScheduleO efeito
NoScheduleimpedirá que pods sem tolerâncias sejam agendados neste nó.
Criando um Pod sem Tolerâncias
Nesta etapa, criaremos um pod sem tolerâncias e verificaremos que ele não pode ser agendado no nó tainted.
Crie um arquivo chamado
pod-without-toleration.yamlcom o seguinte conteúdo:apiVersion: v1 kind: Pod metadata: name: pod-without-toleration spec: containers: - name: nginx image: nginx:latestAplique as alterações:
kubectl apply -f pod-without-toleration.yamlVerifique se o pod não está agendado no nó tainted:
kubectl describe pod pod-without-toleration | grep -i taintA saída deve mostrar que o pod não está agendado no nó com o taint.
Criando um Pod com Tolerâncias
Nesta etapa, criaremos um pod com tolerâncias que permitirão que ele seja agendado no nó tainted.
Crie um arquivo chamado
pod-with-toleration.yamlcom o seguinte conteúdo:apiVersion: v1 kind: Pod metadata: name: pod-with-toleration spec: containers: - name: nginx image: nginx:latest tolerations: - key: "disk-type" operator: "Equal" value: "ssd" effect: "NoSchedule"Aplique as alterações:
kubectl apply -f pod-with-toleration.yamlVerifique se o pod está agendado no nó tainted:
kubectl get pod pod-with-toleration -o wide
Tolerando Múltiplos Taints
Nesta etapa, criaremos um pod com múltiplas tolerâncias que permitirão que ele seja agendado em nós com múltiplos taints.
Crie um arquivo chamado
pod-with-multiple-tolerations.yamlcom o seguinte conteúdo:apiVersion: v1 kind: Pod metadata: name: pod-with-multiple-tolerations spec: containers: - name: nginx image: nginx:latest tolerations: - key: "disk-type" operator: "Equal" value: "ssd" effect: "NoSchedule" - key: "gpu" operator: "Equal" value: "true" effect: "NoSchedule"Aplique as alterações:
kubectl apply -f pod-with-multiple-tolerations.yamlVerifique se o pod está agendado em um nó com ambos os taints:
kubectl get pod pod-with-multiple-tolerations -o wide
Resumo
Neste laboratório, aprendemos como usar taints e tolerâncias para agendar pods em nós específicos. Começamos criando um nó tainted e verificando que pods sem tolerâncias não podiam ser agendados nele. Em seguida, criamos um pod com tolerâncias e verificamos que ele podia ser agendado no nó tainted. Finalmente, criamos um pod com múltiplas tolerâncias e verificamos que ele podia ser agendado em nós com múltiplos taints.
Taints e tolerâncias são um recurso poderoso do Kubernetes que pode ser usado para garantir que certas cargas de trabalho sejam agendadas apenas em nós específicos.


