Acerca dos StatefulSets no GKE

Esta página descreve a utilização de objetos StatefulSet no Google Kubernetes Engine (GKE). Também pode saber como Implementar uma aplicação com estado.

Acerca dos StatefulSets

Os StatefulSets representam um conjunto de pods com identidades persistentes e exclusivas, e nomes de anfitriões estáveis que o GKE mantém independentemente de onde são agendados. As informações de estado e outros dados resilientes para qualquer Pod StatefulSet são mantidos em volumes persistentes associados a cada Pod no StatefulSet. Os pods StatefulSet podem ser reiniciados em qualquer altura.

Para aplicações sem estado, use Implementações.

Os StatefulSets funcionam de forma semelhante no GKE e no Kubernetes. Este documento descreve as considerações específicas do GKE. Para saber como funcionam os StatefulSets, consulte a documentação do Kubernetes sobre os StatefulSets.

Planeie a rede para StatefulSets

Os StatefulSets oferecem armazenamento persistente sob a forma de um PersistentVolume e uma identidade de rede exclusiva (nome do anfitrião). A tabela seguinte inclui as ressalvas de que os operadores de aplicações devem ter conhecimento ao configurar um StatefulSet:

Ressalva sobre trabalhar em rede Descrição Prática recomendada
Serviços do GKE em vez de endereços IP fixos

Embora as réplicas de Pod tenham um índice ordinal exclusivo, suportem volumes por réplica e identidade de rede (nome do anfitrião), os endereços IP atribuídos a uma réplica podem mudar se o GKE reagendar ou despejar um Pod.

Para mitigar problemas de rede, a arquitetura deve usar recursos do serviço do Kubernetes. Para mais informações, consulte o artigo Tipos de serviços Kubernetes.

Serviços sem interface

Quando inicializado, um StatefulSet é sincronizado com um serviço sem cabeça correspondente.

Certifique-se de que o `metadata.name` no seu serviço corresponde ao campo serviceName no seu StatefulSet. Isto permite que cada Pod na sua aplicação seja abordado num endereço de rede exclusivo e bem definido. Além disso, o serviço sem interface fornece um registo multi-IP para cada réplica no seu StatefulSet, o que permite a deteção completa de pares.

Descoberta de pares

As aplicações com estado requerem um número mínimo (quorum) de réplicas para funcionar com disponibilidade total.

Uma vez que os pods podem falhar, ser reagendados ou removidos, cada réplica num StatefulSet deve poder sair e voltar a juntar-se ao quórum. As aplicações que requerem peering devem ter a capacidade de descobrir outros pares através de serviços sem interface gráfica no Kubernetes.

Verificação de funcionamento com base em sondas de disponibilidade e sondas de atividade

A sua aplicação deve ter sondas de prontidão, atividade e arranque devidamente configuradas, quando aplicável. A seleção de limites de tempo para cada teste depende dos requisitos da sua aplicação.

Para as sondas de disponibilidade, siga estas práticas recomendadas para configurar a sua aplicação de modo a marcar a disponibilidade quando estiver pronta para publicar tráfego:

  • Sondas de atividade: pode usar sondas de atividade para sinalizar se um recipiente está em bom estado. Por exemplo, uma réplica da base de dados pode usar uma sondagem de atividade para indicar que o GKE deve reiniciar a réplica, como uma condição de impasse
  • Sondas de prontidão: pode usar sondas de prontidão para remover temporariamente uma réplica do tráfego de publicação. Por exemplo, se tiver uma réplica da base de dados que precise de fazer uma cópia de segurança, pode usar uma sondagem de disponibilidade para parar temporariamente de receber pedidos.
  • Sondagem de arranque: pode usar sondagens de arranque para atrasar as verificações de estado até que as inicializações de longa duração estejam concluídas. Por exemplo, se tiver uma réplica da base de dados, pode usar uma sondagem de arranque para aguardar a inicialização dos dados armazenados no disco.

Para ler mais acerca das sondas, consulte o artigo Configure sondas de atividade, disponibilidade e arranque.

Trabalhe com StatefulSets

Para saber como implementar StatefulSets no seu cluster do GKE e interagir com eles, consulte a documentação do Kubernetes acerca dos básicos do StatefulSet.

O que se segue?