Statefulset

Un objetoStatefulSet ‘es un recurso de Kubernetes diseñado para gestionar Statefulsetaplicaciones con estado' sigue(stateful), eles mismodecir, patrónaquellas que necesitan mantener datos persistentes o identidad única entre reinicios o réplicas.
Mientras que un ‘Deployment'Deployment peroes ideal para aplicaciones sin estado (stateless), donde los pods son intercambiables, el StatefulSet se usa cuando cada pod necesita:
-
Tener un
objetonombre único y predecible. -
Mantener un almacenamiento persistente que no se pierda al reiniciar el pod.
-
Mantener el orden de
estecreacióntipoogarantizandoterminación (muy útil para clústeres de bases de datos, por ejemplo).
🔔 Características principales
-
Identidad única por pod:
Los pods se nombran secuencialmente:mi-app-0,mi-app-1,mi-app-2, etc. -
Volúmenes persistentes dedicados:
Cada pod puede tener su propio PersistentVolumeClaim (PVC) que es estable incluso si elordenpod es eliminado yunicidadrecreado. -
Orden garantizado:
Los pods se crean, actualizan o eliminan uno por uno y en orden. -
Útil para aplicaciones que requieren estado, como:
-
Bases de
dichosdatosPods.(MySQL,EstoPostgreSQL,permiteMongoDB)tener -
conSistemas
estado.de mensajería (Kafka, RabbitMQ) -
Caches distribuidos (Redis en modo cluster)
Pods -
Manifiesto de "Statefulset"
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: nginx-statefulset
labels:
app: nginxmyapp
spec:
serviceName: nginx-myapp-service
replicas: 3
selector:
matchLabels:
app: nginxmyapp
template:
metadata:
labels:
app: nginxmyapp
spec:
containers:
- name: nginxmyapp-container
image: nginx:1.7.9httpd:latest
ports:volumeMounts:
- containerPort:name: 80data
mountPath: /data
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 5Gi