Acerca de los StatefulSets en GKE


En esta página se describe el uso de objetos StatefulSet en Google Kubernetes Engine (GKE). También puedes consultar cómo desplegar una aplicación con estado.

Acerca de los StatefulSets

Los StatefulSets representan un conjunto de pods con identidades únicas y persistentes, así como nombres de host estables que mantiene GKE independientemente de dónde se programen. La información de estado y otros datos resistentes de un pod de StatefulSet determinado se mantienen en volúmenes persistentes asociados a cada pod del StatefulSet. Los pods de StatefulSet se pueden reiniciar en cualquier momento.

En el caso de las aplicaciones sin reconocimiento del estado, usa Deployments.

Los StatefulSets funcionan de forma similar en GKE y en Kubernetes. En este documento se describen las consideraciones específicas de GKE. Para saber cómo funcionan los StatefulSets, consulta la documentación de Kubernetes sobre StatefulSets.

Planificar la red de StatefulSets

Los StatefulSets proporcionan almacenamiento persistente en forma de PersistentVolume y una identidad de red única (nombre de host). En la siguiente tabla se incluyen las advertencias que deben tener en cuenta los operadores de aplicaciones al configurar un StatefulSet:

Advertencia sobre las redes Descripción Práctica recomendada
Servicios de GKE en lugar de direcciones IP fijas

Aunque las réplicas de Pod tienen un índice ordinal único, admiten volúmenes por réplica e identidad de red (nombre de host), las direcciones IP que se asignan a una réplica pueden cambiar si GKE vuelve a programar o expulsa un Pod.

Para mitigar los problemas de red, la arquitectura debe usar recursos de servicio de Kubernetes. Para obtener más información, consulta Tipos de servicios de Kubernetes.

Servicios sin interfaz gráfica

Cuando se inicializa, un StatefulSet se empareja con un servicio sin encabezado coincidente.

Asegúrate de que el valor `metadata.name` de tu servicio coincida con el campo serviceName de tu StatefulSet. De esta forma, cada pod de tu aplicación puede dirigirse a una dirección de red única y bien definida. Además, el servicio sin encabezado proporciona un registro multi-IP para cada réplica de tu StatefulSet, lo que permite el descubrimiento completo de los peers.

Detección de pares

Las aplicaciones con estado requieren un número mínimo (cuórum) de réplicas para funcionar con plena disponibilidad.

Como los pods pueden fallar, reprogramarse o expulsarse, cada réplica de un StatefulSet debe poder abandonar y volver a unirse al quórum. Las aplicaciones que requieran el peering deben tener la capacidad de descubrir otros peers a través de servicios sin encabezado en Kubernetes.

Comprobación del estado basada en comprobaciones de preparación y de actividad

Tu aplicación debe tener sondas de preparación, vivacidad e inicio configuradas correctamente cuando corresponda. La selección de los tiempos de espera de cada sonda depende de los requisitos de tu aplicación.

En el caso de las sondas de disponibilidad, siga estas prácticas recomendadas para configurar su aplicación de forma que marque la disponibilidad cuando esté lista para atender el tráfico:

  • Comprobaciones de actividad: puedes usar comprobaciones de actividad para indicar si un contenedor está en buen estado. Por ejemplo, una réplica de base de datos puede usar una sonda de actividad para indicar que GKE debe reiniciar la réplica, como una condición de interbloqueo.
  • Sondeos de disponibilidad: puedes usar sondeos de disponibilidad para quitar una réplica del tráfico de servicio temporalmente. Por ejemplo, si tienes una réplica de base de datos que necesita hacer una copia de seguridad, puedes usar una sonda de disponibilidad para dejar de recibir solicitudes temporalmente.
  • Sondeo de inicio: puedes usar sondeos de inicio para retrasar las comprobaciones de estado hasta que se completen las inicializaciones de larga duración. Por ejemplo, si tienes una réplica de la base de datos, puedes usar una sonda de inicio para esperar a que se inicialicen los datos almacenados en el disco.

Para obtener más información sobre las sondas, consulta Configurar sondas de vivacidad, preparación e inicio.

Trabajar con StatefulSets

Para saber cómo desplegar StatefulSets en tu clúster de GKE e interactuar con ellos, consulta la documentación de Kubernetes sobre los conceptos básicos de StatefulSet.

Siguientes pasos