Sobes.tech
Middle+

Quais são as regras que proíbem o lançamento de um ponto de nó específico no sistema?

sobes.tech IA

Resposta da IA

Existem os seguintes mecanismos principais:

  • Taints e Tolerations (T/T):

    • Taints (Etiquetas de contaminação): Aplicam-se aos nós. Permitem que um nó "rejeite" os pods que não têm a tolerância correspondente.
    • Tolerations (Tolerâncias): Aplicam-se aos pods. Permitem que um pod seja colocado em um nó que possui uma etiqueta de contaminação correspondente.

    Tipos de efeitos de Taint:

    • NoSchedule - O pod não será agendado no nó se não tiver a tolerância correspondente.
    • PreferNoSchedule - O agendador tentará não colocar o pod neste nó, mas pode fazê-lo se não houver outras opções.
    • NoExecute - O pod não será colocado no nó, e os pods que já estão no nó sem a tolerância correspondente serão expulsos.
  • Afinidade de Nó (Node Affinity):

    • requiredDuringSchedulingIgnoredDuringExecution: O agendador deve colocar o pod em um nó que atenda aos critérios de afinidade. Se não houver nós adequados, o pod permanecerá em Pending.
    • preferredDuringSchedulingIgnoredDuringExecution: O agendador tentará colocar o pod em um nó que atenda aos critérios de afinidade. Se não houver nós adequados, o pod pode ser colocado em outros nós.
  • Configuração do Kubelet:

    Pode-se usar configurações do kubelet para limitar os tipos de pods que podem ser executados em um nó específico, por exemplo, através de static pods ou manifests. Embora seja uma abordagem menos flexível para gerenciamento dinâmico.

# Exemplo de Taint
apiVersion: v1
kind: Node
metadata:
  name: node1
spec:
  taints:
  - key: special
    value: true
    effect: NoSchedule
# Exemplo de Toleration
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  tolerations:
  - key: special
    operator: Equal
    value: true
    effect: NoSchedule
  containers:
  - name: my-container
    image: nginx
# Exemplo de Afinidade de Nó
apiVersion: v1
kind: Pod
metadata:
  name: my-pod-with-affinity
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: kubernetes.io/hostname
            operator: In
            values:
            - node1
            - node2
  containers:
  - name: my-container
    image: nginx