ทำความเข้าใจ Deployment
เรียนรู้ว่า Deployment ทำให้การจัดการ Pod และ ReplicaSets สำหรับแอปพลิเคชันแบบไร้สถานะเป็นอัตโนมัติได้อย่างไร
ทำความเข้าใจ Deployment เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
Deployment คืออะไร
ยินดีต้อนรับ ใน Kubernetes การจัดการแอปพลิเคชันหมายถึงการจัดการพ็อดของแอปพลิเคชัน แต่การจัดการพ็อดแต่ละรายการโดยตรง หรือแม้แต่การจัดการ ReplicaSets ก็อาจซับซ้อนได้
Deployment คือออบเจ็กต์ระดับสูงที่ช่วยให้การจัดการแอปพลิเคชันแบบไร้สถานะง่ายขึ้น ลองนึกภาพว่าเป็นผู้จัดการของแอปพลิเคชัน
- กำหนดสถานะที่ต้องการของแอปพลิเคชัน
- ทำให้มั่นใจว่าสถานะดังกล่าวยังคงอยู่ แม้พ็อดจะล้มเหลว
- ทำให้การอัปเดตและย้อนกลับเวอร์ชันเป็นไปโดยอัตโนมัติ
เหตุใดจึงใช้ Deployment
Deployment มีข้อดีสำคัญสำหรับการเรียกใช้แอปพลิเคชันอย่างน่าเชื่อถือใน Kubernetes:
- การจัดการอัตโนมัติ: จัดการการสร้าง การปรับขนาด และการลบพ็อด
- การซ่อมแซมตัวเอง: หากพ็อดหยุดทำงาน Deployment จะแทนที่พ็อดนั้นโดยอัตโนมัติ เพื่อรักษาจำนวนแบบจำลองให้ตรงตามที่ต้องการ
- การอัปเดตแบบประกาศสถานะ: คุณอธิบายสถานะใหม่ที่ต้องการ แล้ว Deployment จะหาวิธีเปลี่ยนไปสู่สถานะนั้น เช่น การทยอยใช้งานเวอร์ชันใหม่
วิธีนี้เป็นแนวทางที่แนะนำสำหรับการจัดการแอปพลิเคชันแบบไร้สถานะ
บทบาทหลักของ Deployment
หัวใจสำคัญของ Deployment คือการจัดการ ReplicaSets หน้าที่ของ ReplicaSet คือทำให้มั่นใจว่ามีพ็อดแบบจำลองตามจำนวนที่กำหนดกำลังทำงานอยู่ตลอดเวลา
ดังนั้น Deployment จึงใช้ ReplicaSets เพื่อบรรลุเป้าหมาย นั่นคือทำให้แอปพลิเคชันมีพ็อดที่ทำงานและมีสุขภาพดีตรงตามจำนวนที่กำหนดไว้
การแยกรายละเอียดการจัดการไว้ในระดับนี้ทำให้การกำหนดและดูแลวงจรการทำงานของแอปพลิเคชันง่ายขึ้นมาก
องค์ประกอบของ YAML สำหรับ Deployment
เช่นเดียวกับออบเจ็กต์ส่วนใหญ่ของ Kubernetes การกำหนด Deployment ใช้ YAML โดยทั่วไปจะพบส่วนสำคัญดังต่อไปนี้:
apiVersionและkind: ระบุประเภทออบเจ็กต์ (Deployment)metadata: ชื่อ ป้ายกำกับ และข้อมูลอื่น ๆ ของ Deployment เองspec: คำจำกัดความหลัก ซึ่งประกอบด้วย:replicas: จำนวนพ็อดที่ต้องการselector: วิธีที่ Deployment ใช้ค้นหาพ็อดที่ตนจัดการtemplate: แบบแปลนสำหรับพ็อดที่จะสร้าง
แม่แบบพ็อด
ฟิลด์ template ภายใน spec ของ Deployment มีความสำคัญอย่างยิ่ง โดยพื้นฐานแล้วฟิลด์นี้คือคำจำกัดความพ็อดที่สมบูรณ์
พ็อดใด ๆ ที่สร้างโดย Deployment นี้จะใช้แม่แบบดังกล่าว ซึ่งหมายความว่าคุณสามารถกำหนดสิ่งต่อไปนี้:
- อิมเมจคอนเทนเนอร์ที่จะใช้
- พอร์ตที่จะเปิดให้เข้าถึง
- ตัวแปรสภาพแวดล้อม
- คำขอและขีดจำกัดทรัพยากร
- และอื่น ๆ อีกมากมาย
การเปลี่ยนแปลงแม่แบบนี้จะทำให้แอปพลิเคชันได้รับการอัปเดต
สร้าง Deployment อย่างง่าย
มาสร้าง Deployment สำหรับเว็บเซิร์ฟเวอร์ Nginx อย่างง่ายกัน เราต้องการแบบจำลองจำนวน 3 รายการ
สังเกตว่า selector.matchLabels ต้องตรงกับ template.metadata.labels สิ่งนี้จะบอก Deployment ว่าพ็อดใดอยู่ภายใต้การจัดการของตน
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80นำ Deployment ไปใช้
หากต้องการสร้าง Deployment นี้ในคลัสเตอร์ Kubernetes เช่น Minikube ให้ใช้คำสั่ง kubectl apply บันทึก YAML ด้านบนเป็น nginx-deployment.yaml
kubectl จะสร้างออบเจ็กต์ Deployment จากนั้นตัวควบคุม Deployment จะตรวจพบออบเจ็กต์นี้และดำเนินการ โดยสร้าง ReplicaSet ซึ่งจะสร้างพ็อด Nginx จำนวน 3 รายการต่อไป
kubectl apply -f nginx-deployment.yamlตรวจสอบ Deployment ของคุณ
หลังจากนำไปใช้แล้ว คุณสามารถตรวจสอบสถานะของ Deployment และพ็อดที่ Deployment จัดการได้:
kubectl get deployments: แสดง Deployment ของคุณkubectl get replicasets: แสดง ReplicaSet ที่ Deployment สร้างขึ้นkubectl get pods -l app=nginx: แสดงพ็อดที่ Deployment จัดการผ่านตัวเลือกป้ายกำกับkubectl describe deployment my-nginx-deployment: ให้ข้อมูลโดยละเอียดเกี่ยวกับ Deployment รวมถึงเหตุการณ์ต่าง ๆ
kubectl get deployments
kubectl get pods -l app=nginx
kubectl describe deployment my-nginx-deploymentรักษาสถานะที่ต้องการ
หนึ่งในความสามารถที่ทรงพลังที่สุดของ Deployment คือการรักษาสถานะที่ต้องการ หากคุณกำหนด replicas: 3 Deployment จะทำให้มั่นใจว่ามีพ็อด 3 รายการกำลังทำงานอยู่เสมอ
ลองลบพ็อด Nginx รายการหนึ่งด้วยตนเอง (kubectl delete pod <pod-name>) แล้วคุณจะเห็นว่า Deployment สร้างพ็อดรายการใหม่ขึ้นมาแทนที่อย่างรวดเร็ว นี่คือการทำงานของการซ่อมแซมตัวเอง
ตรวจสอบอย่างรวดเร็ว
โดยหลักแล้ว Deployment ใช้จัดการแอปพลิเคชันประเภทใด
ทบทวน: ทำความเข้าใจ Deployment
ทำได้ดีมาก คุณได้เริ่มต้นเรียนรู้การใช้งาน Deployment ของ Kubernetes แล้ว
- Deployment คือออบเจ็กต์ระดับสูงสำหรับจัดการแอปพลิเคชันแบบไร้สถานะ
- Deployment ทำให้การสร้าง การปรับขนาด และการซ่อมแซมตัวเองของพ็อดเป็นอัตโนมัติด้วยการจัดการ ReplicaSets
- คุณกำหนด Deployment โดยใช้ไฟล์กำกับ YAML ระบุจำนวน
replicasที่ต้องการและtemplateสำหรับพ็อด kubectl applyจะสร้าง Deployment และkubectl get/describeช่วยให้คุณตรวจสอบ Deployment ได้
ถัดไป เราจะเจาะลึก ReplicaSets และวิธีที่สิ่งเหล่านี้รับประกันจำนวนพ็อดตามที่คุณต้องการ
คำถามที่พบบ่อย
บทเรียน “ทำความเข้าใจ Deployment” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ทำความเข้าใจ Deployment” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ทำความเข้าใจ Deployment”
เรียนรู้ว่า Deployment ทำให้การจัดการ Pod และ ReplicaSets สำหรับแอปพลิเคชันแบบไร้สถานะเป็นอัตโนมัติได้อย่างไร คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “ทำความเข้าใจ Deployment” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ทำความเข้าใจ Deployment
- การปรับขนาดแอปพลิเคชันด้วย ReplicaSets
- การอัปเดตแบบทยอยและการย้อนกลับ
- กลยุทธ์การนำส่ง: แบบ Blue-Green และ Canary