Junior
Zachovává se při nasazení nějaký stav?
sobes.tech AI
Odpověď od AI
Při nasazení Deployment v Kubernetes se stav neukládá uvnitř samotného kontroléru Deployment. Deployment spravuje ReplicaSet, který dále spravuje Pod. Pod jsou přirozeně efemérní a mohou být restartovány nebo odstraněny.
Ukládání stavu pro aplikace nasazené pomocí Deployment se obvykle realizuje pomocí jiných mechanismů:
- Persistent Volumes (PV) a Persistent Volume Claims (PVC): Používají se k ukládání dat, která musí zůstat dostupná i po odstranění nebo restartu Podů. PV poskytuje úložiště, a PVC ho žádá.
- ConfigMaps a Secrets: Používají se k ukládání konfiguračních dat a citlivých informací (hesla, klíče), odděleně od obrazu kontejneru.
- StatefulSets: Kontrolér speciálně navržený pro správu stavových aplikací. StatefulSets garantují stabilní síťovou identifikaci a trvalé úložiště pro každý Pod, stejně jako uspořádané nasazení a škálování.
Příklad požadavku PVC v manifestu Podu:
# Definice Podu využívající PVC
apiVersion: v1
kind: Pod
metadata:
name: stavová-aplikace
spec:
containers:
- name: můj-kontejner
image: můj-obrázek
volumeMounts:
- name: data-volume
mountPath: /data
volumes:
- name: data-volume
persistentVolumeClaim:
claimName: můj-pvc
Příklad definice StatefulSet:
# Definice StatefulSet
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: můj-statefulset
spec:
serviceName: "můj-servis"
replicas: 3
selector:
matchLabels:
app: můj-stavový-aplikace
template:
metadata:
labels:
app: můj-stavový-aplikace
spec:
containers:
- name: můj-kontejner
image: můj-obrázek
volumeMounts:
- name: můj-volumen
mountPath: /data
volumeClaimTemplates:
- metadata:
name: můj-volumen
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
Tedy, samotný Deployment ne ukládá stav. Jeho úkolem je zajistit požadovaný počet replik Podů bez uchování jejich identity nebo stavu mezi restarty. Pro stavové aplikace se používají StatefulSets, PV/PVC, ConfigMaps a Secrets.