Cloud Expert
StatefulSets for Databases¶
KubernetesStatefulSetDatabase 3 min read
StatefulSets for stateful applications in Kubernetes. Ordered deployment, stable network identity.
Why StatefulSet?¶
Unlike Deployments: stable hostname (pod-0, pod-1), ordered creation/deletion, persistent volumes per pod.
Example¶
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: postgres
spec:
serviceName: postgres
replicas: 3
selector:
matchLabels: {app: postgres}
template:
metadata:
labels: {app: postgres}
spec:
containers:
- name: postgres
image: postgres:16
ports: [{containerPort: 5432}]
volumeMounts:
- {name: data, mountPath: /var/lib/postgresql/data}
volumeClaimTemplates:
- metadata: {name: data}
spec:
accessModes: [ReadWriteOnce]
resources: {requests: {storage: 100Gi}}
Headless Service¶
StatefulSet requires a headless service (clusterIP: None) for DNS records: postgres-0.postgres.default.svc.cluster.local
Summary¶
StatefulSet for databases, message queues and other stateful workloads. Consider managed DB (RDS, Cloud SQL) for simpler operations.
Need Help with Implementation?¶
Our team has experience designing and implementing modern architectures. We’re happy to help.