Pular para conteúdo

Cluster em sistema imutável

O cluster Kubernetes roda em Talos Linux: um sistema sem shell, sem SSH e sem gestor de pacotes, configurado inteiramente por uma API declarativa.

flowchart LR
    cfg["Configuração declarativa do nó"] --> api["API do sistema operacional"]
    api --> node["Nó (imutável)"]
    node --> k8s["Kubernetes"]

O que muda na operação

  • Nó é gado, não bicho de estimação. Para mudar um nó, muda-se a configuração e aplica-se; não se entra nele.
  • Mesma imagem, hardware diferente. O cluster mistura placas ARM pequenas e uma máquina x86 com GPU, todas gerenciadas do mesmo jeito.
  • Extensões entram na imagem, não por instalação manual. Drivers de GPU, por exemplo, são extensões de sistema escolhidas na construção da imagem.

Trade-offs

  • (+) Superfície de ataque menor e estado do nó reproduzível.
  • (+) Atualizar o sistema operacional é uma operação de API, com rollback.
  • (−) Sem SSH para "dar um jeito": todo diagnóstico passa por API e logs.
  • (−) Curva de aprendizado e alguns detalhes específicos de VM (nomes de interface, firmware) que só se aprendem uma vez.
  • (−) Armazenamento lento em nós pequenos pede disciplina: workloads que escrevem muito não vão para eles.