Kodėl naudojame deployment, kad valdytume ReplicaSet'us, o ne juos tiesiogiai?
sobes.tech AI
Atsakymas iš AI
Deployment užtikrina deklaratyvų požiūrį į ReplicaSet'ų ir Pod'ų valdymą. Jis leidžia aprašyti norimą programėlės būseną (kiek replika, koks konteinerio atvaizdas ir kt.), o Deployment kontroleris nuolat dirba siekdamas pasiekti šią būseną.
Pagrindiniai Deployment naudojimo privalumai:
- Atnaujinimų ir grįžimų valdymas: Deployment palaiko atnaujinimo strategijas (pavyzdžiui, RollingUpdate) ir leidžia lengvai grįžti prie ankstesnių versijų, jei kyla problemų.
- Automatinis RollingUpdate: Kai keičiasi konteinerio atvaizdas, Deployment automatiškai sukuria naujus Pod'us su nauja versija, palaipsniui pašalindamas senus Pod'us, užtikrindamas nulinį prastovą.
- ReplicaSet'ų valdymas: Deployment kuria ir valdo ReplicaSet'us, kurie savo ruožtu palaiko norimą Pod'ų skaičių.
- Revizijų istorija: Deployment stebi pakeitimų istoriją, leidžiančią grįžti prie ankstesnių versijų.
- Valdymo paprastumas: Vietoje tiesioginio sąveikos su ReplicaSet'ais ir Pod'ais, dirbame su vienu Deployment objektu, kuris abstrakčiai valdo žemiau esančius elementus.
Tiesioginis ReplicaSet'ų ar Pod'ų valdymas žymiai apsunkina atnaujinimo, mastelio keitimo ir grįžimo užduotis, reikalaujant rankinių operacijų ar sudėtingesnių automatizacijos scenarijų. Deployment siūlo paruoštą, stabilų mechanizmą šių užduočių sprendimui.
Deployment manifesto pavyzdys:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3 # Norimas replika skaičius
selector:
matchLabels:
app: nginx
strategy:
type: RollingUpdate # Atnaujinimo strategija
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2 # Konteinerio atvaizdas
ports:
- containerPort: 80
Šis manifestas aprašo Deployment'ą, kuris turėtų palaikyti 3 replika Pod'ų su nginx:1.14.2 atvaizdu. Deployment valdys šios būsenos užtikrinimą, sukurdamas ir mastelį didindamas ReplicaSet.