Deployments
Deployment เป็น Kubernetes Resource ที่ใช้สำหรับการจัดการและปรับใช้แอปพลิเคชันอย่างมีประสิทธิภาพ Deployment ช่วยให้คุณสามารถอัปเดต Pod, ควบคุมจำนวน Replica และทำการ Rollback ไปยังเวอร์ชันก่อนหน้าได้
คุณสมบัติของ Deployment
-
การปรับจำนวน Replica
- Deployment สามารถควบคุมจำนวน Replica (สำเนา) ของ Pods ที่ต้องการรัน
-
การอัปเดตแบบ Rolling Update
- Deployment รองรับการอัปเดตแบบ Rolling Update เพื่อเปลี่ยนแปลงแอปพลิเคชันโดยไม่ทำให้การให้บริการหยุดชะงัก
-
การทำ Rollback
- สามารถย้อนกลับไปยังเวอร์ชันก่อนหน้าได้หากการอัปเดตล้มเหลว
-
การจัดการอัตโนมัติ
- Kubernetes จะจัดการ Pods และ ReplicaSets ให้ตรงกับการตั้งค่าใน Deployment
การใช้งาน Deployment
ตัวอย่างไฟล์ YAML ของ Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
labels:
app: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: nginx:1.21
ports:
- containerPort: 80
การสร้าง Deployment
ใช้คำสั่ง kubectl apply:
kubectl apply -f my-deployment.yaml
การตรวจสอบสถานะ Deployment
-
ดู Deployment ทั้งหมด
kubectl get deployments -
ดูรายละเอียดของ Deployment
kubectl describe deployment <deployment-name> -
ดู Pods ที่เกี่ยวข้องกับ Deployment
kubectl get pods -l app=my-app
การปรับจำนวน Replica
- แก้ไขไฟล์ YAML หรือใช้คำสั่ง:
kubectl scale deployment <deployment-name> --replicas=5
การอัปเดต Deployment
-
แก้ไขไฟล์ YAML (เช่นเปลี่ยน image)
containers:
- name: my-container
image: nginx:1.22 -
อัปเดต Deployment ด้วยคำสั่ง
kubectl apply -f my-deployment.yaml -
ตรวจสอบสถานะการอัปเดต
kubectl rollout status deployment <deployment-name>
การ Rollback Deployment
-
Rollback ไปยังเวอร์ชันก่อนหน้า
kubectl rollout undo deployment <deployment-name> -
ดูประวัติของการเปลี่ยนแปลง
kubectl rollout history deployment <deployment-name>
การลบ Deployment
- ลบ Deployment และ Pods ที่เกี่ยวข้อง
kubectl delete deployment <deployment-name>
การทำงานเบื้องหลังของ Deployment
-
Deployment Controller
- จัดการการสร้าง ReplicaSets และควบคุม Pods ให้ตรงตามจำนวนที่กำหนด
-
ReplicaSet
- เป็นตัวควบคุมจำนวน Replica ของ Pods
-
Rolling Update
- Deployment จะสร้าง ReplicaSet ใหม่และลบ ReplicaSet เก่าออกทีละขั้นตอน เพื่อให้การเปลี่ยนแปลงไม่มี Downtime
Deployment เป็นเครื่องมือสำคัญสำหรับการจัดการแอปพลิเคชันใน Kubernetes การเข้าใจวิธีการใช้งานและคำสั่งต่าง ๆ จะช่วยให้คุณจัดการคลัสเตอร์ได้อย่างมีประสิทธิภาพ