Junior
Megmarad-e valamilyen állapot, amikor deployment-et hajtunk végre?
sobes.tech MI
Válasz az MI-től
Kubernetesben a Deployment telepítésekor a állapot nem tárolódik a Deployment vezérlőn belül. A Deployment egy ReplicaSet-et kezel, amely viszont a Podokat irányítja. A Podok természetüknél fogva múlandóak, és újraindíthatók vagy törölhetők.
Az állapot megőrzése a Deployment segítségével telepített alkalmazások esetén általában más mechanizmusok segítségével történik:
- Persistent Volumes (PV) és Persistent Volume Claims (PVC): Ezeket az adatok tárolására használják, amelyeknek akkor is elérhetőnek kell maradniuk, ha a Podokat törlik vagy újraindítják. A PV tárolást biztosít, a PVC pedig igényli.
- ConfigMaps és Secrets: Ezek a konfigurációs adatok és érzékeny információk (jelszavak, kulcsok) tárolására szolgálnak, elkülönítve a konténer képétől.
- StatefulSets: Egy kifejezetten állapotkezelésre tervezett vezérlő. A StatefulSets garantálja minden Pod számára a stabil hálózati azonosítást és a tartós tárolást, valamint az összerendezett telepítést és skálázást.
Példa PVC kérésre Pod manifestben:
# Pod definíció PVC használatával
apiVersion: v1
kind: Pod
metadata:
name: állapot-alkalmazásom
spec:
containers:
- name: konténerem
image: képem
volumeMounts:
- name: adat-volumen
mountPath: /adatok
volumes:
- name: adat-volumen
persistentVolumeClaim:
claimName: pvc-m
StatefulSet definíció példája:
# StatefulSet definíció
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: állapot-állítmányom
spec:
serviceName: "szolgáltatásom"
replicas: 3
selector:
matchLabels:
app: állapot-alkalmazásom
template:
metadata:
labels:
app: állapot-alkalmazásom
spec:
containers:
- name: konténerem
image: képem
volumeMounts:
- name: volumenem
mountPath: /adatok
volumeClaimTemplates:
- metadata:
name: volumenem
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
Tehát, a Deployment maga nem tárol állapotot. Feladata, hogy a szükséges számú Pod-replikát biztosítsa anélkül, hogy azok egyéni azonosítóját vagy állapotát megőrizné a újraindások között. Állapotkezelő alkalmazásokhoz a StatefulSets, PV/PVC, ConfigMaps és Secrets használata ajánlott.