Cargas de trabalho do Kubernetes para alta disponibilidade

Esta página recomenda estratégias de carga de trabalho de contentores do Kubernetes que tornam a sua aplicação mais tolerante a falhas num universo multizona isolado (air-gapped) do Google Distributed Cloud (GDC). O GDC suporta aplicações de contentores nativas do Kubernetes que são amplamente consumidas e suportadas no Google Kubernetes Engine (GKE).

Esta página destina-se a programadores no grupo de operadores de aplicações, que são responsáveis por criar cargas de trabalho de aplicações para a respetiva organização. Para mais informações, consulte a documentação sobre públicos-alvo para GDC com isolamento de ar.

Considerações do Kubernetes para apps de HA

A obtenção de alta disponibilidade (HA) no Kubernetes vai além do plano de controlo. Também tem de criar e implementar cargas de trabalho de contentores no seu universo isolado do Google Distributed Cloud (GDC) de forma resiliente. O Kubernetes oferece vários mecanismos eficazes para minimizar o tempo de inatividade e fornecer serviços altamente disponíveis, mesmo quando enfrenta problemas de infraestrutura ou durante a manutenção de rotina. Os seguintes tópicos são estratégias importantes a ter em conta para a HA:

  • Mantenha a disponibilidade com réplicas e ajuste automático da escala: tem de ter instâncias em execução suficientes da sua aplicação para fornecer HA.

    • ReplicaSet: um recurso ReplicaSet mantém um conjunto estável de réplicas de pods idênticas em execução em qualquer altura. Se um pod falhar ou for terminado, o controlador ReplicaSet cria automaticamente um novo pod para o substituir. Consulte a documentação do Kubernetes sobre o ReplicaSet para mais informações.

    • Horizontal Pod Autoscaler (HPA): embora um ReplicaSet mantenha um número fixo de réplicas, o HPA ajusta automaticamente este número com base em métricas observadas, como a utilização da CPU ou a utilização da memória. Isto permite que a sua aplicação processe picos de carga. Consulte a documentação do Kubernetes sobre a escala automática horizontal de pods para mais informações.

  • Minimize o tempo de inatividade com o PodDisruptionBudget (PDB): consulte o artigo Especificar um orçamento de interrupção para a sua aplicação na documentação do Kubernetes para mais informações.

  • Distribua o risco com regras de antiafinidade: consulte a documentação do Kubernetes sobre afinidade e antiafinidade para mais informações.

  • Verificações de funcionamento com sondas de atividade, prontidão e arranque: consulte a documentação do Kubernetes sobre como configurar sondas de atividade, prontidão e arranque para mais informações.

  • Pontos finais estáveis e equilíbrio de carga com serviços: consulte a documentação do Kubernetes para mais informações.

  • Atualizações e reversões elegantes com implementações: consulte o artigo Reverter uma implementação na documentação do Kubernetes para mais informações.

  • Defina pedidos e limites para recursos: consulte a gestão de recursos para pods e contentores na documentação do Kubernetes para mais informações.

O que se segue?