Junior
Vai, veicot deployment, saglabājas kāda stāvokļa?
sobes.tech AI
Atbilde no AI
Kad Kubernetes ieviešot Deployment, nav saglabāts stāvoklis pašā Deployment kontrolierī. Deployment pārvalda ReplicaSet, kas savukārt pārvalda Podus. Pod-iem pēc būtības ir efemēri un tie var tikt pārstartēti vai dzēsti.
Stāvokļa saglabāšana Deployment izvietotajām lietojumprogrammām parasti tiek īstenota ar citiem mehānismiem:
- Persistent Volumes (PV) un Persistent Volume Claims (PVC): Tiek izmantoti datu glabāšanai, kas jāpaliek pieejamiem pat pēc Podu dzēšanas vai pārstartēšanas. PV nodrošina glabāšanu, bet PVC to pieprasa.
- ConfigMaps un Secrets: Tiek izmantoti konfigurācijas datu un jutīgas informācijas (paroles, atslēgas) glabāšanai, atdalīti no konteineru attēla.
- StatefulSets: Īpaši izstrādāts stāvokļa programmām. StatefulSets garantē stabilu tīkla identifikāciju un stabilu glabāšanu katram Podam, kā arī kārtīgu izvietošanu un mērogošanu.
Piemērs PVC pieprasījumam Pod manifestā:
# Pod definīcija, kas izmanto 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 # PVC nosaukums, ko izmanto
StatefulSet definīcija:
# StatefulSet definīcija
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
Tātad, pats Deployment nesaglabā stāvokli. Tā uzdevums ir nodrošināt nepieciešamo Pod repliku skaitu bez to individuālās identitātes vai stāvokļa saglabāšanas starp restarta reižu. Stāvokļa programmām izmanto StatefulSets, PV/PVC, ConfigMaps un Secrets.