À propos des objets StatefulSet dans GKE


Cette page décrit l'utilisation des objets StatefulSet dans Google Kubernetes Engine (GKE). Vous pouvez également apprendre à Déployer une application avec état.

À propos des objets StatefulSet

Un StatefulSet représente un ensemble de pods dotés d'identités uniques et persistantes et de noms d'hôtes stables que GKE conserve, quel que soit l'endroit où ils sont planifiés. Les informations d'état et autres données résilientes relatives à un pod d'un StatefulSet donné sont conservées dans des volumes persistants associés à chaque pod du StatefulSet. Les pods StatefulSet peuvent être redémarrés à tout moment.

Pour les applications sans état, utilisez les objets Déploiement.

Les StatefulSets fonctionnent de manière similaire dans GKE et dans Kubernetes. Ce document décrit les considérations spécifiques à GKE. Pour en savoir plus sur le fonctionnement des StatefulSets, consultez la documentation Kubernetes sur les StatefulSets.

Planifier la mise en réseau des StatefulSets

Les StatefulSets fournissent un espace de stockage persistant sous la forme d'un PersistentVolume et une identité réseau unique (nom d'hôte). Le tableau suivant répertorie les mises en garde que les opérateurs d'application doivent prendre en compte lors de la configuration d'un StatefulSet :

Mise en garde concernant la mise en réseau Description Bonne pratique
Services GKE au lieu d'adresses IP fixes

Bien que les instances répliquées des pods aient un index ordinal unique, des volumes par instance et une identité réseau (nom d'hôte), les adresses IP attribuées à une instance répliquée peuvent changer si GKE replanifie ou évince un pod.

Pour atténuer les problèmes de mise en réseau, l'architecture doit utiliser les ressources de service Kubernetes. Pour plus d'informations, consultez la section Types de services Kubernetes.

Services sans interface graphique

Lorsqu'il est initialisé, un StatefulSet est associé à un service sans interface graphique correspondant.

Assurez-vous que le "metadata.name" de votre service correspond au champ serviceName de votre StatefulSet. Cela permet de fournir à chaque pod de votre application à une adresse réseau unique et bien définie. De plus, le service sans interface graphique fournit un enregistrement multi-IP pour chaque instance dupliquée de votre StatefulSet, ce qui permet une découverte complète des pairs.

Découverte de pairs

Les applications avec état nécessitent un nombre minimal (quorum) d'instances dupliquées pour fonctionner avec une disponibilité complète.

Les pods pouvant planter, être reprogrammés ou être évincés, chaque instance dupliquée d'un StatefulSet doit pouvoir quitter et rejoindre le quorum. Les applications nécessitant un appairage doivent avoir la possibilité de découvrir d'autres pairs via des services sans interface graphique dans Kubernetes.

Vérification d'état basée sur des vérifications d'aptitude et d'activité

Le cas échéant, votre application doit être correctement configurée pour les vérifications d'aptitude, d'activité et de démarrage. Le choix de délai avant expiration pour chaque vérification dépend des exigences de votre application.

Pour les vérifications d'aptitude, suivez les bonnes pratiques ci-dessous pour configurer votre application de manière à indiquer qu'elle est prête à diffuser du trafic :

  • Vérifications d'activité : vous pouvez utiliser les vérifications d'activité pour signaler si un conteneur est opérationnel. Par exemple, une instance dupliquée de base de données peut utiliser une vérification d'activité pour indiquer à GKE que l'instance dupliquée doit être redémarrée, par exemple en condition d'interblocage.
  • Vérifications d'aptitude : vous pouvez utiliser des vérifications d'aptitude pour arrêter temporairement de diffuser du trafic vers une instance dupliquée. Par exemple, si vous disposez d'une instance dupliquée de base de données qui doit effectuer une sauvegarde, vous pouvez utiliser une vérification d'aptitude pour arrêter temporairement la réception de requêtes.
  • Vérification de démarrage : vous pouvez utiliser des vérifications de démarrage pour retarder les vérifications d'état afin d'attendre que les initialisations plus longues se terminent. Par exemple, si vous disposez d'une instance dupliquée de base de données, vous pouvez utiliser une vérification de démarrage pour attendre l'initialisation des données stockées sur le disque.

Pour en savoir plus sur les vérifications, consultez l'article Configurer des vérifications d'activité, d'aptitude et de démarrage.

Utiliser des StatefulSets

Pour découvrir comment déployer des StatefulSets dans votre cluster GKE et interagir avec eux, consultez la documentation Kubernetes sur les principes de base des StatefulSets.

Étapes suivantes