Middle
Millisele rakendusele peaks kasutama StatefulSet asemel Deployment ja miks?
sobes.tech AI
Vastus AI-lt
StatefulSet on vaja kasutada rakenduste jaoks, millele on vajalik:
- Stabiilne võrgutuvastamine. Podid saavad unikaalse, püsiva hostname formaadis
<statefulset-name>-<pod-index>. - Stabiilne, püsiv salvestus. Iga Pod'i replikale määratakse oma PersistentVolume. Isegi Pod'i taaskäivitamisel jäävad andmed selle külge seotud.
- Korraldatud juurutamine ja skaleerimine. Podid luuakse ja kustutatakse rangelt määratletud järjekorras (kasvavas järjekorras loomisel, kahanevas - kustutamisel).
- Korraldatud või paralleelne uuendus. Toetab nii järkjärgulist (rolling update), kui ka paralleelset (in-place või parallel) uuendust, kuid kontrolli võimalusega.
Näited sellistest rakendustest:
- Andmebaasid (MySQL, PostgreSQL, MongoDB)
- Sõnumivahetajad (Kafka, RabbitMQ)
- Vahemälusüsteemid (Redis, Memcached)
- Jaotatud failisüsteemid (näiteks Ceph, kui töötab Kubernetesis)
- Iga rakendus, millel on vaja säilitada olek taaskäivituste vahel ja omada püsivat identifitseerimist.
Erinevalt Deploymentist, kus Podid on vahetatavad ja stateless, tagab StatefulSet unikaalsuse ja oleku säilitamise iga repliigi jaoks, mis on kriitiline rakendustele, mis sõltuvad püsivast andmete salvestamisest ja stabiilsest võrgutuvastamisest.
Lihtne StatefulSet näide andmebaasile:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mysql
spec:
selector:
matchLabels:
app: mysql
serviceName: "mysql" # Vajalik stabiilseks võrgutuvastamiseks Podide jaoks
replicas: 3
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.7
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "password" # Kasutada Secrets tootmises
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql # Tee, kuhu paigaldatakse püsiv salvestus
volumeClaimTemplates:
- metadata:
name: mysql-persistent-storage # PVC mallinimi
spec:
accessModes: [ "ReadWriteOnce" ] # Juurdepääsirežiim
resources:
requests:
storage: 10Gi # Nõutav salvestusmaht