Sobre StatefulSets no GKE


Nesta página, descrevemos o uso de objetos StatefulSet no Google Kubernetes Engine (GKE). Você também aprende a implantar um aplicativo com estado.

Sobre StatefulSets

StatefulSets representam um conjunto de pods com identidades únicas e permanentes e nomes de host estáveis que o GKE mantém, onde quer que estejam programados. As informações de estado e outros dados resilientes de qualquer pod do StatefulSet são mantidos em volumes permanentes associados a cada pod no StatefulSet. Os pods StatefulSet podem ser reiniciados a qualquer momento.

Para aplicativos sem estado, use Implantações.

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

Planejar a rede para StatefulSets

Os StatefulSets fornecem armazenamento permanente na forma de um PersistentVolume e de uma identidade de rede exclusiva (nome do host). A tabela a seguir inclui as ressalvas que os operadores de aplicativos precisam conhecer ao configurar um StatefulSet:

Advertência de rede Descrição Prática recomendada
Serviços do GKE em vez de endereços IP fixos

Ainda que as réplicas do pod tenham um índice ordinal exclusivo, suporte a volumes por réplica e identidade de rede (nome do host), os endereços IP atribuídos a uma réplica poderão ser alterados se o GKE reprogramar ou remover um pod.

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

Serviços sem comando

Quando inicializado, um StatefulSet é pareado com um serviço sem comando correspondente.

Verifique se o "metadata.name" no serviço corresponde ao campo serviceName no StatefulSet. Isso permite que cada pod do seu aplicativo seja endereçado a um endereço de rede único e bem definido. Além disso, o serviço sem comando fornece um registro multiIP para cada réplica no seu StatefulSet, permitindo descoberta completa de apps semelhantes.

Descoberta de semelhantes

Aplicativos com estado exigem um número mínimo (quorum) de réplicas para funcionar com disponibilidade total.

Como os pods podem falhar, ser reprogramados ou removidos, cada réplica em um StatefulSet precisa sair e voltar a participar do quórum. Aplicativos que exigem peering precisam ter a capacidade de descobrir outros pares por meio de serviços sem comando no Kubernetes.

Verificação de integridade com base em sondagens de prontidão e de atividade

Seu aplicativo deve ter sondagens de prontidão, atividade e inicialização configuradas corretamente, quando aplicável. A seleção de tempos limite para cada sondagem depende dos requisitos do seu aplicativo.

Para sondagens de prontidão, siga estas práticas recomendadas para configurar o aplicativo para marcar a prontidão quando ele estiver pronto para exibir o tráfego:

  • Sondagens de atividade: podem ser usadas para verificar se um contêiner está íntegro. Por exemplo, uma réplica de banco de dados pode usar uma sondagem de atividade para indicar que o GKE precisa reiniciar a réplica, como a condição de impasse
  • Sondagens de prontidão: podem ser usadas para remover uma réplica de exibir tráfego temporariamente. Por exemplo, se você tiver uma réplica de banco de dados que precisa executar um backup, use uma sondagem de prontidão para interromper temporariamente o recebimento de solicitações.
  • Sondagem de inicialização: podem ser usadas para atrasar as verificações de integridade até que inicializações de longa duração sejam concluídas. Por exemplo, se você tiver uma réplica de banco de dados, poderá usar uma sondagem de inicialização para aguardar a inicialização dos dados armazenados no disco.

Para ler mais sobre sondagens, consulte Configurar sondagens de atividade, prontidão e inicialização.

Trabalhar com StatefulSets

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

A seguir