Nó Dedicado de Banco
Este é o contrato de scheduling do nó de banco. O agente injeta o bloco abaixo
em toda criação de cluster PostgreSQL para garantir que ele — e somente ele —
seja agendado no rke-db-00.
O bloco canônico
Seção intitulada “O bloco canônico”# Injetado em todo manifesto de banco gerado pelo agenteaffinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/database operator: In values: - "true"tolerations: - key: "dedicated" operator: "Equal" value: "database" effect: "NoSchedule"Como as duas metades trabalham juntas
Seção intitulada “Como as duas metades trabalham juntas”flowchart TB
subgraph node["rke-db-00"]
L["Label: node-role.kubernetes.io/database=true"]
T["Taint: dedicated=database:NoSchedule"]
end
A["nodeAffinity (required)"] -->|exige o label| L
Tol["toleration (Equal/database)"] -->|tolera o taint| T
PG["Pod PostgreSQL"] --- A
PG --- Tol
PG -->|✅ agendado| node
Other["Outro pod (sem o bloco)"] -.->|❌ repelido| T
| Metade | Papel |
|---|---|
nodeAffinity (dura) | Força o pod para o nó com o label de banco |
tolerations | Permite que o pod ignore o taint que repele os demais |
Sem a affinity, o pod poderia ir para qualquer nó. Sem a toleration, ele seria repelido pelo taint. As duas são obrigatórias.
Onde é aplicado
Seção intitulada “Onde é aplicado”- Pelo agente, na etapa stateful first.
- Em todo
Clusterdo CloudNativePG. - Para os bancos de GitLab, Nextcloud e Penpot.