Junior
Kas deployment'i ajal säilitatakse mõni olek?
sobes.tech AI
Vastus AI-lt
Kui Kuberneteses paigaldatakse Deployment, ei salvestata olekut otse Deployment kontrollijasse. Deployment juhib ReplicaSeti, mis omakorda juhib Pod'e. Pod'id on oma olemuselt efemeroidsed ja neid saab taaskäivitada või eemaldada.
Oleku salvestamine Deployment'iga paigaldatud rakenduste jaoks toimub tavaliselt teiste mehhanismide kaudu:
- Persistent Volumes (PV) ja Persistent Volume Claims (PVC): Kasutatakse andmete salvestamiseks, mis peavad jääma kättesaadavaks isegi pärast Pod'ide kustutamist või taaskäivitamist. PV pakub salvestusruumi, ja PVC seda nõuab.
- ConfigMaps ja Secrets: Kasutatakse konfiguratsioonandmete ja tundliku teabe (paroolid, võtmed) salvestamiseks, eraldatuna konteineri pildist.
- StatefulSets: Spetsiaalselt loodud kontroller, mis haldab olekuga rakendusi. StatefulSets tagab stabiilse võrgulise identifikaatori ja stabiilse salvestusruumi iga Pod'i jaoks ning korraliku juurutamise ja skaleerimise.
Näide PVC nõudest Pod'i manifestis:
# Pod'i definitsioon, mis kasutab PVC-d
apiVersion: v1
kind: Pod
metadata:
name: my-stateful-app
spec:
containers:
- name: my-container
image: my-image
volumeMounts:
- name: data-volume
mountPath: /data
volumes:
- name: data-volume
persistentVolumeClaim:
claimName: my-pvc-claim # PVC nimi, mida kasutatakse
Näide StatefulSet'i definitsioonist:
# StatefulSet'i definitsioon
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: my-statefulset
spec:
serviceName: "my-service"
replicas: 3
selector:
matchLabels:
app: my-statefulset-app
template:
metadata:
labels:
app: my-statefulset-app
spec:
containers:
- name: my-container
image: my-image
volumeMounts:
- name: my-volume
mountPath: /data
volumeClaimTemplates:
- metadata:
name: my-volume
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
Seega, ise Deployment ei salvesta olekut. Selle ülesandeks on tagada vajalik Pod'ide arv replikaid ilma nende individuaalse identiteedi või olekuta taaskäivituste vahel. Olekuvajadustega rakendused kasutavad StatefulSets, PV/PVC, ConfigMaps ja Secrets.