Acerca de StatefulSets en GKE


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

Acerca de StatefulSets

Los objetos StatefulSet representan un conjunto de Pods con identidades exclusivas y persistentes, y con nombres de host estables que GKE conserva sin importar el lugar donde estén programados. La información de estado y otros datos resilientes de cualquier Pod del StatefulSet se conservan en volúmenes persistentes asociados a cada Pod del StatefulSet. Los Pods de StatefulSet se pueden reiniciar en cualquier momento.

Para las aplicaciones sin estado, debes usar objetos Deployment.

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

Planifica las redes para StatefulSets

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

Advertencia de Herramientas de redes Descripción Práctica recomendada
Services de GKE en lugar de direcciones IP fijas

Aunque las réplicas de Pods tienen un índice ordinal único, admiten volúmenes por réplica, y cuentan con identidad de red (nombre de host), las direcciones IP asignadas a una réplica pueden cambiar si GKE reprograma o expulsa un Pod.

Para mitigar los problemas de herramientas de redes, la arquitectura debe usar los recursos del Service de Kubernetes. Para obtener más información, consulta Tipos de Services de Kubernetes.

Services sin interfaz gráfica

Cuando se inicializa, StatefulSet se vincula con un Service sin interfaz gráfica coincidente.

Asegúrate de que el “metadata.name” en tu Service coincida con el campo serviceName en tu StatefulSet. Esto permite que cada Pod de tu aplicación se dirija a una dirección de red única y bien definida. Además, el Service sin interfaz gráfica proporciona un registro de varias IP para cada réplica en StatefulSet, lo que permite el descubrimiento completo de pares.

Descubrimiento de pares

Las aplicaciones con estado requieren una cantidad mínima (de quórum) de réplicas para funcionar con disponibilidad completa.

A medida que los pods pueden fallar, reprogramarse o expulsarse, cada réplica de StatefulSet debe poder salir y volver a unirse a quórum. Las aplicaciones que requieren intercambio de tráfico deben tener la capacidad de descubrir otros pares a través de Services sin interfaz gráfica en Kubernetes.

Verificación de estado basada en sondeos de preparación y sondeos de funcionamiento

Tu aplicación debe tener los sondeos de preparación, funcionamiento e inicio configurados adecuadamente cuando corresponda. La selección de tiempos de espera para cada sondeo depende de los requisitos de tu aplicación.

Para los sondeos de preparación, sigue estas prácticas recomendadas a fin de configurar tu aplicación para marcar la preparación cuando esté lista para entregar tráfico:

  • Sondeos de funcionamiento: Puedes usar sondeos de funcionamiento para indicar si un contenedor está en buen estado. Por ejemplo, una réplica de la base de datos puede usar un sondeo de funcionamiento para indicar que GKE debe reiniciar la réplica, como una condición de interbloqueo.
  • Sondeos de preparación: puedes usar sondeos de preparación para quitar una réplica de la entrega de tráfico de manera temporal. Por ejemplo, si tienes una réplica de base de datos que necesita realizar una copia de seguridad, puedes usar un sondeo de preparación para dejar de recibir solicitudes de manera temporal.
  • Sondeo de inicio: Puedes usar sondeos de inicio para retrasar las verificaciones de estado hasta que se completen las inicializaciones de larga duración. Por ejemplo, si tienes una réplica de base de datos, puedes usar un sondeo de inicio para esperar la inicialización de los datos almacenados desde el disco.

Para leer más sobre los sondeos, consulta Configura sondeos de funcionamiento, inicio y preparación.

Trabaja con StatefulSets

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

¿Qué sigue?