Junior
Ar diegiant išlaikomas tam tikras būsenas?
sobes.tech AI
Atsakymas iš AI
Kubernetes'e Deployment įdiegus, būsena nėra saugoma pačiame Deployment kontroleryje. Deployment valdo ReplicaSet, kuris savo ruožtu valdo Pod'us. Pod'ai savo prigimtimi yra efemeriški ir gali būti perkraunami arba ištrinti.
Būsena, reikalinga Deployment diegiamoms programoms, dažniausiai įgyvendinama naudojant kitus mechanizmus:
- Persistent Volumes (PV) ir Persistent Volume Claims (PVC): Naudojami duomenims saugoti, kurie turi būti pasiekiami net ir po Pod'ų ištrynimo ar perkrovimo. PV teikia saugyklą, o PVC jos prašo.
- ConfigMaps ir Secrets: Naudojami konfigūracijos duomenims ir jautrioms informacijoms (slaptažodžiams, raktams) saugoti, atskirti nuo konteinerio vaizdo.
- StatefulSets: Specialiai sukurtas valdyti būsenos turinčias programas. StatefulSets garantuoja stabilų tinklo identifikavimą ir stabilų saugyklą kiekvienam Pod'ui, taip pat tvarkingą diegimą ir mastelio keitimą.
Pavyzdys PVC užklausos Pod manifest'e:
# Pod apibrėžimas, naudojantis PVC
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 # Naudojamas PVC pavadinimas
StatefulSet apibrėžimas:
# StatefulSet apibrėžimas
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
Taigi, pats Deployment nesaugo būsenos. Jo užduotis — užtikrinti reikiamą Pod'ų replikos skaičių be jų individualios tapatybės ar būsenos tarp perkrovų. Būsenos turinčias programas naudoja StatefulSets, PV/PVC, ConfigMaps ir Secrets.