0Pricing
DevOps Bootcamp · บทเรียน

การอัปเดตแบบทยอยและการย้อนกลับ

นำการอัปเดตแอปพลิเคชันโดยไม่หยุดให้บริการมาใช้ และย้อนกลับไปยังเวอร์ชันก่อนหน้าเมื่อเกิดปัญหา

การอัปเดตแบบทยอยและการย้อนกลับ เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ทำความเข้าใจ Deployment
  2. การปรับขนาดแอปพลิเคชันด้วย ReplicaSets
  3. การอัปเดตแบบทยอยและการย้อนกลับ
  4. กลยุทธ์การนำส่ง: แบบ Blue-Green และ Canary
← กลับไปที่ DevOps Bootcamp