Wordt er een staat behouden bij het uitrollen van een deployment?
sobes.tech AI
Antwoord van AI
Bij het uitrollen van een Deployment in Kubernetes wordt de staat niet opgeslagen binnen de Deployment-controller zelf. Deployment beheert een ReplicaSet, dat op zijn beurt de Pods beheert. Pods zijn van nature vergankelijk en kunnen worden herstart of verwijderd.
Het bewaren van de staat voor applicaties die met Deployment worden uitgerold, wordt meestal gedaan via andere mechanismen:
- Persistent Volumes (PV) en Persistent Volume Claims (PVC): Gebruikt om gegevens op te slaan die zelfs na het verwijderen of herstarten van Pods toegankelijk blijven. PV biedt opslag, en PVC vraagt ernaar.
- ConfigMaps en Secrets: Gebruikt om configuratiegegevens en gevoelige informatie (wachtwoorden, sleutels) op te slaan, gescheiden van de containerafbeelding.
- StatefulSets: Een controller die speciaal is ontworpen voor het beheren van stateful applicaties. StatefulSets garanderen stabiele netwerkidentificatie en persistente opslag voor elke Pod, evenals geordend uitrollen en schalen.
Voorbeeld van een PVC-aanvraag in een Pod-manifest:
# Definitie van een Pod die PVC gebruikt
apiVersion: v1
kind: Pod
metadata:
name: mijn-staat-gevoelige-app
spec:
containers:
- name: mijn-container
image: mijn-image
volumeMounts:
- name: data-volume
mountPath: /data
volumes:
- name: data-volume
persistentVolumeClaim:
claimName: mijn-pvc
Voorbeeld van een StatefulSet-definitie:
# Definitie van een StatefulSet
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mijn-statefulset
spec:
serviceName: "mijn-service"
replicas: 3
selector:
matchLabels:
app: mijn-staat-gevoelige-app
template:
metadata:
labels:
app: mijn-staat-gevoelige-app
spec:
containers:
- name: mijn-container
image: mijn-image
volumeMounts:
- name: mijn-volume
mountPath: /data
volumeClaimTemplates:
- metadata:
name: mijn-volume
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
Dus, de Deployment zelf bewaart geen staat. Zijn taak is om het benodigde aantal Pod-replicas te garanderen zonder hun identiteit of staat tussen herstarts te bewaren. Voor stateful applicaties worden StatefulSets, PV/PVC, ConfigMaps en Secrets gebruikt.