O que e um cluster? Muitas maquinas agindo como uma so
Um cluster e um conjunto de maquinas coordenadas para agir como um unico pool de compute - assim voce faz deploy para o cluster, e nao para servidores individuais.
Clustering e a ideia que transforma um rack de maquinas em um unico sistema resiliente. Em vez de se importar com qual servidor roda seu app, voce entrega o trabalho ao cluster e o deixa posicionar, escalar e recuperar esse trabalho. No Kubernetes especificamente, um cluster tem uma estrutura clara em duas partes.
As duas partes de um cluster Kubernetes
Um control plane toma decisoes globais e armazena estado (no etcd), e um conjunto de worker nodes roda os workloads reais. O control plane e o cerebro; os nodes sao o musculo.
Por que clusterizar
- Resiliencia - uma maquina falhando nao derruba o sistema.
- Escala - adicione nodes para adicionar capacidade de forma transparente.
- Abstracao - faca deploy para um pool, nao para servidores nomeados.
Estado desejado em todo o cluster
Voce declara o que deve rodar; o control plane o agenda nos nodes e reconcilia continuamente. A medida que nodes vao e vem, o cluster mantem seus workloads declarados em execucao.
Nao so o Kubernetes
O conceito de clustering antecede e vai alem do Kubernetes - clusters de banco de dados, clusters de compute e frotas de runners de CI aplicam a mesma ideia de "muitas maquinas, um sistema logico".
Clusters e CI/CD
O CD faz deploy para um cluster; a CI muitas vezes roda em sua propria frota de maquinas runner que se comportam como um cluster de workers. Plataformas de runner gerenciadas operam essa frota - provisionando, escalando e recuperando-a - para que voce trate a capacidade de CI como um unico pool elastico.
Principais conclusões
- Um cluster faz muitas maquinas se comportarem como um unico pool de compute.
- Um cluster Kubernetes combina um control plane (cerebro) com worker nodes (musculo).
- O clustering compra resiliencia, escala e uma abstracao de deploy-para-o-pool.