0Pricing
Kubernetes Basics · บทเรียน

ทำความเข้าใจ Deployment

เรียนรู้ว่า Deployment ทำให้การจัดการ Pod และ ReplicaSets สำหรับแอปพลิเคชันแบบไร้สถานะเป็นอัตโนมัติได้อย่างไร

ทำความเข้าใจ Deployment เป็นบทเรียน Kubernetes Basics ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kubernetes Basics และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kubernetes Basics มีบทเรียนทั้งหมด 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) และปลดล็อคส่วนที่เหลือของคอร์ส Kubernetes Basics ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kubernetes Basics มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ทำความเข้าใจ Deployment”

เรียนรู้ว่า Deployment ทำให้การจัดการ Pod และ ReplicaSets สำหรับแอปพลิเคชันแบบไร้สถานะเป็นอัตโนมัติได้อย่างไร คุณปฏิบัติ Kubernetes Basics ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kubernetes Basics หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kubernetes Basics บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “ทำความเข้าใจ Deployment” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Kubernetes Basics นี้ได้ไหม

ได้ บทเรียน Kubernetes Basics ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

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