ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
Deployment က Pod ကို တိုက်ရိုက် မဟုတ်ဘဲ 'ReplicaSet' ကနေတစ်ဆင့် စီမံပေးပါတယ် — 'ဒီ image ကနေ pod ၃ ခု အမြဲရှိစေချင်တယ်' လို့ desired state ကို ပြောလိုက်ရင် Deployment က အဲဒီ state ကို အမြဲထိန်းပေးပါတယ်။ Pod တစ်ခု crash သွားရင် Deployment က ချက်ချင်း pod အသစ်တစ်ခု ပြန်ဖန်တီးပေးပါတယ် (ကျန် pod ၂ ခု ၃ ခုပြည့်အောင်)။ Deployment ကို update လုပ်ရင် (image version အသစ်) rolling update (နောက် chapter) ကိုပါ automatic လုပ်ပေးပါတယ်။
လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
Deployment YAML ထဲမှာ `replicas: 3` လို့ ရေးလိုက်ရင် pod ၃ ခု အမြဲရှိအောင် ထိန်းပေးပါတယ်။ Pod တစ်ခုကို manual `kubectl delete pod` နဲ့ ဖျက်ကြည့်ရင်တောင် Deployment က ချက်ချင်း pod အသစ်ပြန်ဖန်တီးလာတာ တွေ့ရမှာပါ — ဒါက Deployment ရဲ့ self-healing power ကို ကိုယ်တိုင် သက်သေပြတဲ့ demo ပါ။
အတူတူ ကြည့်မယ်
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deployment
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: web
image: nginx:latest
ports:
- containerPort: 80$ kubectl apply -f deployment.yaml
deployment.apps/web-deployment created
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
web-deployment-7d9f8c6b5-abc12 1/1 Running 0 5s
web-deployment-7d9f8c6b5-def34 1/1 Running 0 5s
web-deployment-7d9f8c6b5-ghi56 1/1 Running 0 5s၅ မိနစ် စမ်းကြည့်
အထက်က Deployment ကို apply လုပ်ပြီး pod ၃ ခု run နေတာ ကြည့်ပါ — pod တစ်ခုကို `kubectl delete pod <name>` နဲ့ ဖျက်ကြည့်ပြီး ပြန်ပေါ်လာတာ (self-healing) ကို သက်သေပြကြည့်ပါ။
သတိလေးတစ်ချက်
Deployment ကို ဖျက်ရင် (`kubectl delete deployment`) ချုပ်ချယ်ထားတဲ့ pod အားလုံးပါ ပါသွားပါတယ် — pod တစ်ခုတည်းပဲ ဖျက်ချင်ရင် pod ကို တိုက်ရိုက် target လုပ်ပါ (Deployment မဟုတ်ပါ)။