Kubernetes déploiements vs StatefulSets

j'ai fait beaucoup de recherches sur les Kubernetes, et j'aime beaucoup ce que je vois! Une chose sur laquelle je n'ai pas pu me faire une idée claire est de savoir quelles sont les distinctions exactes entre les ressources de déploiement et celles de L'état et dans quels scénarios utiliser chacune (ou l'une est généralement préférée à l'autre).

Toutes les expériences que les gens peuvent partager serait génial!!

27
demandé sur SS781 2017-01-11 08:57:28

2 réponses

Les contrôleurs de déploiement et de réplication sont destinés à l'usage des apatrides et sont plutôt légers. StatefulSets sont utilisés lorsque l'État doit être maintenu. Par conséquent, ces derniers utilisent volumeClaimTemplates / créances sur les volumes afin de s'assurer qu'ils peuvent garder l'état à travers la composante redémarre.

donc si votre application est stateful ou si vous voulez déployer le stockage stateful sur le dessus de Kubernetes utilisez un StatefulSet.

Si votre demande est apatride ou si l'état peut être construit de backend-les systèmes au début utilisent alors des déploiements.

Plus de détails peuvent être trouvés ici et ici.

27
répondu pagid 2018-01-14 22:40:39

utilisez ' StatefulSet 'avec une application distribuée qui exige que chaque noeud ait un état persistant et la capacité de configurer un nombre arbitraire de noeuds à travers une configuration (replicas = 'X').

tous les noeuds dans une configuration maître-maître et les noeuds esclaves dans une configuration maître-esclave peuvent utiliser un StatefulSet avec un Service. Les noeuds maîtres (comme maître, maître-secondaire) peuvent chacun être une gousse avec un certain volume persistant avec un Service que ces noeuds n'avez pas besoin à l'échelle vers le haut ou vers le bas. Ils peuvent aussi bien être un État avec des répliques = 1.

Exemples de StatefulSet sont:

- Datanodes (esclaves) dans un cluster Hadoop (maître-esclave)

- noeuds de base de données (master-master) dans un cluster de Cassandra

chaque module (réplique) d'un État a

- une identité réseau unique et stable

- Kubernetes crée un volume persistant pour chaque VolumeClaimTemplate

https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/

le "déploiement" par contre est adapté aux applications/services apatrides où les noeuds ne nécessitent pas d'identité particulière (un équilibreur de charge peut atteindre n'importe quel noeud qu'il choisit) et le nombre de noeuds peut être un nombre arbitraire.

4
répondu Anurag 2017-12-28 12:23:58