การอัปเดตแบบทยอยและการย้อนกลับ
นำการอัปเดตแอปพลิเคชันโดยไม่หยุดให้บริการมาใช้ และย้อนกลับไปยังเวอร์ชันก่อนหน้าเมื่อเกิดปัญหา
การอัปเดตแบบทยอยและการย้อนกลับ เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
การอัปเดตโดยไม่หยุดให้บริการ: เพราะเหตุใด
ลองนึกภาพการอัปเดตแอปพลิเคชันที่กำลังให้บริการอยู่ หากวางแผนไม่รอบคอบ ผู้ใช้อาจพบช่วงที่ระบบหยุดให้บริการหรือเกิดข้อผิดพลาด นี่คือจุดที่การอัปเดตแบบ ทยอยเปลี่ยนใน Kubernetes แสดงประสิทธิภาพได้อย่างโดดเด่น
การอัปเดตแบบทยอยเปลี่ยนช่วยให้คุณอัปเดตแอปพลิเคชันเป็นเวอร์ชันใหม่ได้โดยไม่ขัดจังหวะการให้บริการ ระบบจะทยอยนำเวอร์ชันใหม่ออกใช้งาน เพื่อให้แอปของคุณยังพร้อมใช้งานอยู่
วิธีที่ Deployments จัดการการอัปเดต
เมื่อคุณอัปเดตแม่แบบ Pod ของ Deployment (เช่น เปลี่ยนอิมเมจคอนเทนเนอร์) Kubernetes จะไม่ปิดทุกอย่างแล้วเริ่มใหม่ แต่จะใช้กลยุทธ์ RollingUpdate เป็นค่าเริ่มต้น
- สร้าง Pod ใหม่ด้วยการกำหนดค่าที่อัปเดตแล้ว
- ทยอยยุติการทำงานของ Pod เก่าเมื่อ Pod ใหม่พร้อมใช้งาน
- กระบวนการนี้ช่วยให้เปลี่ยนผ่านได้อย่างราบรื่น โดยมีช่วงหยุดให้บริการน้อยที่สุดหรือไม่มีเลย
การควบคุมความเร็วในการทยอยนำออกใช้งาน
คุณสามารถปรับแต่งพฤติกรรมของการอัปเดตแบบทยอยเปลี่ยนได้โดยใช้พารามิเตอร์สำคัญสองรายการในส่วน .spec.strategy.rollingUpdate ของ Deployment:
maxUnavailable: จำนวน Pod สูงสุดที่ไม่พร้อมใช้งานได้ระหว่างการอัปเดต อาจระบุเป็นจำนวนเต็มหรือเปอร์เซ็นต์maxSurge: จำนวน Pod สูงสุดที่สร้างเพิ่มจากจำนวน Pod ที่ต้องการ อาจระบุเป็นจำนวนเต็มหรือเปอร์เซ็นต์เช่นกัน
โดยค่าเริ่มต้น ทั้งสองรายการกำหนดไว้ที่ 25%
Deployment เริ่มต้นของเรา
มาเริ่มด้วยการทำให้ Nginx ใช้งานอย่างง่าย YAML นี้กำหนดแอปพลิเคชันเริ่มต้นของเราให้ทำงานด้วยเรพลิกา 3 รายการของ nginx:1.14.2
เราจะใช้สิ่งนี้เป็นพื้นฐานสำหรับการอัปเดตแบบทยอยเปลี่ยนในขั้นตอนถัดไป
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80การดำเนินการอัปเดตแบบทยอยเปลี่ยน
ตอนนี้มาอัปเดตเวอร์ชัน Nginx จาก 1.14.2 เป็น 1.15.0 เพียงเปลี่ยนอิมเมจใน YAML แล้วนำไปใช้
Kubernetes จะตรวจพบการเปลี่ยนแปลงและเริ่มการอัปเดตแบบทยอยเปลี่ยนโดยอัตโนมัติ โปรดสังเกตฟิลด์ image ด้านล่าง:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.15.0
ports:
- containerPort: 80การตรวจสอบสถานะการทยอยนำออกใช้งาน
หลังจากนำ YAML ที่อัปเดตแล้วไปใช้ คุณสามารถตรวจสอบความคืบหน้าของการอัปเดตแบบทยอยเปลี่ยนได้โดยใช้คำสั่ง kubectl rollout status:
kubectl rollout status deployment/my-nginx
คุณจะเห็นข้อความแจ้งว่ากำลังสร้าง Pod ใหม่และยุติการทำงานของ Pod เก่า จนกว่าการอัปเดตจะเสร็จสมบูรณ์ นอกจากนี้ยังใช้ kubectl get rs เพื่อดู ReplicaSet เก่าและใหม่ได้
การตรวจสอบประวัติการทยอยนำออกใช้งาน
Kubernetes จะเก็บประวัติเวอร์ชันแก้ไขของ Deployments ไว้ ซึ่งมีประโยชน์อย่างมากในการทำความเข้าใจการเปลี่ยนแปลงและการย้อนกลับที่อาจจำเป็น
หากต้องการดูประวัติ ให้ใช้คำสั่ง:
kubectl rollout history deployment/my-nginx
คุณจะเห็นรายการเวอร์ชันแก้ไข โดยแต่ละรายการแสดงสถานะที่แตกต่างกันของ Deployment ค่า CHANGE-CAUSE มักสะท้อนคำสั่งหรือการเปลี่ยนแปลงใน YAML
เมื่อใดจึงจำเป็นต้องย้อนกลับ
แม้จะทดสอบอย่างรอบคอบแล้ว แต่บางครั้งเวอร์ชันใหม่ของแอปพลิเคชันก็อาจมีข้อบกพร่องหรือปัญหาด้านประสิทธิภาพที่ตรวจไม่พบ ในสถานการณ์สำคัญเช่นนี้ คุณต้องมีวิธีที่รวดเร็วในการย้อนกลับไปยังสถานะที่เสถียรและทราบแน่ชัด
นี่คือจุดที่การย้อนกลับมีบทบาท การย้อนกลับช่วยให้คุณยกเลิกการอัปเดตที่มีปัญหาและนำ Deployment กลับไปยังเวอร์ชันก่อนหน้าที่ใช้งานได้จากประวัติ
การดำเนินการย้อนกลับ
หากต้องการย้อนกลับไปยังเวอร์ชันแก้ไขก่อนหน้าทันที ให้ใช้:
kubectl rollout undo deployment/my-nginx
หากต้องการย้อนกลับไปยังเวอร์ชันแก้ไขที่ระบุ (เช่น เวอร์ชันแก้ไข 1) คุณสามารถระบุได้ดังนี้:
kubectl rollout undo deployment/my-nginx --to-revision=1
Kubernetes จะดำเนินการอัปเดตแบบทยอยเปลี่ยนอีกครั้ง เพื่อคืนค่า Pod ให้ตรงกับการกำหนดค่าในประวัติที่ระบุ
ตรวจสอบกลยุทธ์การทยอยนำออกใช้งาน
พารามิเตอร์ใดต่อไปนี้สามารถใช้ควบคุมพฤติกรรมของกลยุทธ์ RollingUpdate ใน Kubernetes Deployment ได้
ทบทวน: การอัปเดตที่ราบรื่นและกลไกความปลอดภัย
เราได้สำรวจว่า Kubernetes Deployments ช่วยให้ดำเนินการอัปเดตแบบทยอยเปลี่ยนโดยไม่หยุดให้บริการ ทำให้แอปพลิเคชันเปลี่ยนไปใช้เวอร์ชันใหม่ได้อย่างราบรื่น คุณได้เรียนรู้ว่า:
- Deployments ใช้
RollingUpdateเป็นค่าเริ่มต้น maxUnavailableและmaxSurgeควบคุมความเร็วในการอัปเดตkubectl rollout statusใช้ตรวจสอบความคืบหน้าkubectl rollout historyใช้ติดตามเวอร์ชันแก้ไขkubectl rollout undoช่วยให้ย้อนกลับไปยังเวอร์ชันที่เสถียรได้อย่างรวดเร็ว
ฟีเจอร์เหล่านี้มีความสำคัญอย่างยิ่งต่อการรักษาความพร้อมใช้งานสูงและความน่าเชื่อถือของแอปพลิเคชัน
คำถามที่พบบ่อย
บทเรียน “การอัปเดตแบบทยอยและการย้อนกลับ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การอัปเดตแบบทยอยและการย้อนกลับ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การอัปเดตแบบทยอยและการย้อนกลับ”
นำการอัปเดตแอปพลิเคชันโดยไม่หยุดให้บริการมาใช้ และย้อนกลับไปยังเวอร์ชันก่อนหน้าเมื่อเกิดปัญหา คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การอัปเดตแบบทยอยและการย้อนกลับ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ทำความเข้าใจ Deployment
- การปรับขนาดแอปพลิเคชันด้วย ReplicaSets
- การอัปเดตแบบทยอยและการย้อนกลับ
- กลยุทธ์การนำส่ง: แบบ Blue-Green และ Canary