O Kubernetes executa aplicações contentorizadas num cluster de computadores e mantém-nas no estado que descrever. Para tal, coloca o trabalho nos computadores certos, encaminha o tráfego para os locais certos e monitoriza falhas e alterações.
O fluxo básico
1. Descreva o que pretende executar
A maioria das cargas de trabalho do Kubernetes começa com um "estado pretendido" declarado (o que deve estar em execução, quantas cópias e de que forma devem ser expostas). O Kubernetes baseia-se em configuração declarativa e automatização.
2. O Kubernetes decide onde executar
O Kubernetes agenda contentores em computadores do cluster com base nos recursos de computação disponíveis e nas necessidades de cada contentor. Os contentores são executados dentro de Pods, a unidade que o Kubernetes coloca num computador.
3. O Kubernetes continua a verificar se a realidade corresponde ao seu estado pretendido
Os controladores monitorizam o cluster, trabalham para aproximar o estado atual do estado pretendido e utilizam o servidor de API para efetuar alterações.
Agendamento de contentores e gestão quotidiana
O agendamento responde à pergunta "onde deve ser executada a carga de trabalho?" decisão.
1. São agendados Pods, não contentores individuais
O Kubernetes agrupa contentores em Pods e, em seguida, coloca esses Pods em computadores.
2. O componente de agendamento atribui os Pods a um nó adequado
O kube-scheduler procura Pods que ainda não estejam atribuídos e seleciona um nó para os mesmos.
3. Os agentes dos nós mantêm os Pods em execução
Em cada nó, o kubelet garante que os Pods estão em execução (bem como os respetivos contentores).
Balanceamento de carga e deteção de serviços
Os contentores e os Pods podem ser criados, movidos ou substituídos, pelo que as aplicações precisam de formas estáveis de se encontrarem entre si.
A deteção de serviços e o balanceamento de carga são comportamentos incorporados
O Kubernetes gere a deteção de serviços e utiliza o balanceamento de carga para encaminhar o tráfego, mesmo quando os Pods mudam ao longo do tempo.
Os serviços proporcionam um endereço estável para um conjunto variável de Pods
A API de Serviço proporciona um endereço IP ou nome do anfitrião estável para um serviço suportado por um ou mais Pods, e o Kubernetes monitoriza os Pods subjacentes através de objetos EndpointSlice.
O encaminhamento do tráfego é atualizado à medida que os Pods mudam
Quando os Pods subjacentes a um serviço mudam, o encaminhamento do serviço adapta-se para que o tráfego continue a chegar aos back-ends atuais.
Dimensionamento de aplicações (e a importância do "estado pretendido")
O Kubernetes pode dimensionar as cargas de trabalho até ao estado que definir e efetuar esse dimensionamento com base na utilização dos recursos de computação.
Os conceitos comuns de dimensionamento incluem:
Mais réplicas (mais Pods) para processar uma procura mais elevada.
Menos réplicas quando a procura diminui.
Monitorização de recursos para que as decisões de colocação reflitam as necessidades de CPU e memória.
Esta abordagem remete para o modelo de "estado pretendido": especifique o objetivo e os controladores continuarão a trabalhar para o atingir.
Autorrecuperação: o que acontece quando algo falha
O Kubernetes inclui comportamentos de autorrecuperação destinados a manter o estado de funcionamento e a disponibilidade das cargas de trabalho. Estes incluem:
Reinício de contentores com falhas (reinícios ao nível do contentor).
Substituição de Pods com falhas para manter o número de réplicas pedido (substituição de réplicas).
Reagendamento de cargas de trabalho quando os nós ficam indisponíveis.
Remoção de Pods com falhas dos pontos finais de serviço para que o tráfego seja encaminhado apenas para Pods em bom estado de funcionamento (balanceamento de carga para serviços).
A autorrecuperação verifica o estado de funcionamento dos contentores e reinicia-os ou replica-os quando ocorrem problemas.
A função dos KPIs do Kubernetes
Os indicadores chave de desempenho (KPIs ou métricas) são utilizados para compreender o estado de funcionamento do cluster e o comportamento das cargas de trabalho.
Origem dos KPIs
Os componentes do sistema Kubernetes emitem métricas (formato Prometheus) úteis para dashboards e alertas.
As métricas estão normalmente disponíveis no ponto final HTTP /metrics de cada componente, como kube-apiserver, kube-scheduler, kubelet, kube-proxy e kube-controller-manager.
Exemplos do que os KPIs ajudam a detetar
Indicadores do estado de funcionamento do cluster (métricas ao nível dos componentes e padrões de erro)
Estabilidade das cargas de trabalho (por exemplo, reinícios ou substituições frequentes)
Pressão sobre a capacidade (alocação de recursos face à procura, associada a decisões de dimensionamento)
Porque é importante nas operações quotidianas
A monitorização proporciona às equipas uma visão mais completa dos recursos do cluster, da API do Kubernetes, dos contentores e dos registos, o que reduz o ciclo de feedback entre os problemas e as correções.