StatefulSets sind eine spezielle Art von Controller in Kubernetes, die für die Verwaltung von stateful Anwendungen entwickelt wurden. Im Gegensatz zu Deployments, die für stateless Anwendungen verwendet werden, bieten StatefulSets Mechanismen, um sicherzustellen, dass jeder Pod in einem Set eine stabile, eindeutige Netzwerkidentität und beständige Speicherverbindungen hat.
StatefulSets eignen sich besonders für Anwendungen, die einen stabilen, eindeutigen Netzwerkbezeichner und persistenten Speicher benötigen, wie z.B. Datenbanken, verteilte Dateisysteme und andere stateful Anwendungen.
1. Erstellen eines StatefulSets
Erstellen Sie eine YAML-Datei statefulset.yaml mit
folgendem Inhalt:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
namespace: default
spec:
serviceName: "nginx"
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
name: web
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumeClaimTemplates:
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi2. Erstellen eines Headless Service
Ein Headless Service wird benötigt, um die Netzwerkkonnektivität für die Pods in einem StatefulSet zu ermöglichen:
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginxDeployen Sie den Service und das StatefulSet:
kubectl apply -f headless-service.yaml
kubectl apply -f statefulset.yamlÜberprüfen des StatefulSets
Überprüfen Sie die laufenden Pods und das StatefulSet:
kubectl get statefulsets
kubectl get pods -l app=nginxSkalieren eines StatefulSets
StatefulSets können wie Deployments skaliert werden:
kubectl scale statefulset web --replicas=5Updates an StatefulSets
Updates an StatefulSets erfolgen geordnet und sicher, um sicherzustellen, dass die Anwendung konsistent bleibt. Ändern Sie die StatefulSet Konfiguration und wenden Sie die Änderungen an:
kubectl apply -f statefulset.yamlStatefulSets bieten eine robuste Lösung für die Verwaltung von stateful Anwendungen in Kubernetes. Durch die Bereitstellung stabiler Netzwerkidentitäten und beständiger Speicher ermöglichen StatefulSets eine konsistente und zuverlässige Verwaltung von stateful Workloads. Ein tiefes Verständnis der Funktionsweise und der Verwaltung von StatefulSets ist entscheidend für den erfolgreichen Einsatz stateful Anwendungen in Kubernetes.