StatefulSets voor stateful apps
Deploy en beheer stateful applicaties, zoals databases, met StatefulSets, met stabiele netwerkidentifiers en persistente opslag.
StatefulSets voor stateful apps is een gratis De basis van Kubernetes-les op CoddyKit. Dit is les 1 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject De basis van Kubernetes. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus De basis van Kubernetes bevat in totaal 4 lessen.
StatefulSets voor stateful toepassingen
Welkom! In deze les duik je in StatefulSets, een Kubernetes-object dat is ontworpen om stateful toepassingen te beheren.
In tegenstelling tot stateless toepassingen (die eenvoudig kunnen worden geschaald en vervangen), hebben stateful toepassingen voor elke instantie een unieke identiteit en permanente opslag nodig. Denk aan databases, berichtenwachtrijen of aangepaste toepassingen die lokaal gegevens opslaan.
Waarom stateful? De uitdaging
Traditionele Deployments zijn uitstekend geschikt voor stateless toepassingen. Als een Pod uitvalt, vervangt een nieuwe Pod deze en maakt het niet uit welke Pod het verzoek verwerkt.
Bij stateful toepassingen heeft elke replica echter vaak een stabiele, unieke identiteit en eigen toegewezen opslag nodig. Als een database-Pod opnieuw wordt gestart, moet deze opnieuw verbinding maken met zijn specifieke gegevensvolume.
Stabiele netwerk- en Pod-identiteit
Een belangrijke functie van StatefulSets is het bieden van stabiele, unieke netwerkidentificatie voor elke Pod.
- Pods krijgen een voorspelbare naam in een vaste volgorde (bijvoorbeeld
web-0,web-1). - Hun hostnamen blijven behouden na opnieuw starten.
- Daardoor kunnen andere services betrouwbaar verbinding maken met een specifieke replica.
Stabiele en permanente opslag
StatefulSets zorgen ervoor dat elke Pod zijn eigen stabiele, permanente opslag krijgt. Dit wordt geregeld met Persistent Volume Claims (PVCs).
Wanneer een StatefulSet-Pod wordt gemaakt, wordt automatisch een PVC ingericht op basis van een definitie van volumeClaimTemplates. Als de Pod uitvalt en opnieuw wordt gemaakt, wordt deze opnieuw gekoppeld aan dezelfde PVC en daarmee aan de oorspronkelijke gegevens.
Anatomie van een StatefulSet-YAML-bestand
Een StatefulSet-YAML-definitie lijkt op een Deployment, maar bevat enkele belangrijke toevoegingen. De definitie bevat:
apiVersion,kind,metadataspec.replicas,spec.selector,spec.template(zoals bij Deployments)spec.serviceName: verwijst naar een headless service.spec.volumeClaimTemplates: bepaalt hoe PVCs voor elke Pod worden gemaakt.
Headless service voor stabiele ID's
Om stabiele netwerkidentiteiten te bieden, hebben StatefulSets een headless service nodig. Een headless service heeft geen cluster-IP. In plaats daarvan geeft deze rechtstreeks de IP-adressen terug van de Pods die door de service worden geselecteerd.
De StatefulSet gebruikt deze service om DNS-vermeldingen voor elk van zijn Pods te registreren (bijvoorbeeld pod-0.my-service.my-namespace.svc.cluster.local).
apiVersion: v1
kind: Service
metadata:
name: my-app-headless
spec:
ports:
- port: 80
name: web
clusterIP: None # This makes it a headless service
selector:
app: my-appVolumeClaimTemplates
De sectie volumeClaimTemplates is uniek voor StatefulSets. Het is een sjabloon voor de Persistent Volume Claims (PVCs) die voor elke replica worden gemaakt.
Elke Pod in de StatefulSet (bijvoorbeeld my-app-0, my-app-1) krijgt op basis van deze sjabloon een eigen PVC (bijvoorbeeld data-my-app-0, data-my-app-1), zodat elke Pod toegewezen opslag heeft.
volumeClaimTemplates:
- metadata:
name: data # This name is used in Pod's volumeMounts
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: standard
resources:
requests:
storage: 1GiVolledig StatefulSet-voorbeeld
Hier is een volledig voorbeeld van een eenvoudige Nginx-StatefulSet. Let op serviceName, dat naar de headless service verwijst, en op volumeClaimTemplates.
Als je dit wilt implementeren, sla je het op als nginx-statefulset.yaml en voer je kubectl apply -f nginx-statefulset.yaml uit.
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
serviceName: "nginx-headless" # Must match headless service name
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: k8s.gcr.io/nginx-slim:0.8
ports:
- containerPort: 80
name: web
volumeMounts:
- name: www # Mounts the volume from the PVC
mountPath: /usr/share/nginx/html
volumeClaimTemplates:
- metadata:
name: www # This name links to volumeMounts.name
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: standard
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: Service
metadata:
name: nginx-headless
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginxPodnaamgeving en volgorde
Na de implementatie zie je Pods met namen zoals web-0 en web-1. Deze indexen zijn stabiel en uniek.
StatefulSets dwingen een strikte volgorde af voor schaalbewerkingen. Pods worden in volgorde gemaakt (0, 1, 2...) en in omgekeerde volgorde beëindigd (..., 2, 1, 0).
Deze geordende aanpak is essentieel voor veel gedistribueerde stateful systemen om consistentie te behouden.
Schalen en rolling updates
Je kunt een StatefulSet net als een Deployment schalen met kubectl scale statefulset web --replicas=3.
Rolling updates werken ook, met dezelfde garanties voor de volgorde: Pods worden één voor één bijgewerkt, in omgekeerde rangtelwoordvolgorde. De volgende Pod wordt pas bijgewerkt wanneer de vorige gereed is.
Deze zorgvuldige orkestratie beperkt verstoring voor stateful toepassingen.
Controleer je begrip
Welke van de volgende kenmerken of vereisten zijn belangrijk voor Kubernetes StatefulSets?
Samenvatting: StatefulSets in actie
Goed gedaan! In deze les heb je StatefulSets verkend, een krachtig Kubernetes-object voor het beheren van stateful toepassingen.
- Ze bieden stabiele netwerkidentiteiten en geordende bewerkingen.
- Ze gebruiken
volumeClaimTemplatesvoor toegewezen, permanente opslag per replica. - Een headless service is essentieel voor hun stabiele netwerk-ID's.
StatefulSets zijn onmisbaar om databases en andere kritieke stateful workloads betrouwbaar op Kubernetes uit te voeren.
Leer De basis van Kubernetes met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 12
- Lessen
- 48
Veelgestelde vragen
Is de les “StatefulSets voor stateful apps” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad De basis van Kubernetes, waaronder “StatefulSets voor stateful apps”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus De basis van Kubernetes bevat in totaal 4 lessen.
Wat leer ik in “StatefulSets voor stateful apps”?
Deploy en beheer stateful applicaties, zoals databases, met StatefulSets, met stabiele netwerkidentifiers en persistente opslag. Je oefent met De basis van Kubernetes door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met De basis van Kubernetes te beginnen?
Ervaring vooraf is niet nodig. De basis van Kubernetes op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.
Hoe lang duurt de les “StatefulSets voor stateful apps”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over De basis van Kubernetes?
Ja. Elke les over De basis van Kubernetes bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- StatefulSets voor stateful apps
- DaemonSets voor nodespecifieke taken
- Kubernetes Operators begrijpen
- Custom Resource Definitions (CRD's)