ข้ามไปเนื้อหาหลัก
คอนเทนเนอร์· ~18 นาที

Pod แรกของคุณ (+ Lab)

หน่วยเล็กที่สุดที่ K8s รัน — เขียน YAML แล้ว deploy จริง

เปรียบเทียบให้เห็นภาพ

Pod คือหน่วยเล็กที่สุดที่ K8s รัน — ไม่ใช่ container เดี่ยว ๆ แต่เป็น "ห่อ" ที่บรรจุ container 1 ตัว (หรือมากกว่า) ที่ต้องอยู่ด้วยกัน · เหมือนฝักถั่ว (pod แปลว่าฝัก) ที่ในฝักมีเมล็ดถั่วอยู่ — เมล็ดคือ container

container ใน Pod เดียวกันจะแชร์เครือข่าย (IP เดียวกัน) และ storage จึงคุยกันผ่าน localhost ได้ · ส่วนใหญ่ 1 Pod = 1 container แต่บางกรณีใส่ container ผู้ช่วย (sidecar) เพิ่มได้

Pod = ฝักที่ห่อ container ให้แชร์เครือข่ายและ storage

Pod (IP เดียว)
container: appฟังพอร์ต 8080
container: sidecarเช่น log agent
คุยกันผ่าน localhostแชร์ volume

ส่วนใหญ่ 1 Pod = 1 container · เพิ่ม sidecar ได้เมื่อต้องอยู่ติดกันจริง ๆ

กายวิภาค Pod: container ในฝักเดียวแชร์ IP และ volume คุยกันผ่าน localhost

🧪 Lab: รัน Pod แรกของคุณ

apiVersion: v1          # เวอร์ชัน API สำหรับ object พื้นฐาน
kind: Pod               # ชนิดของ object ที่จะสร้าง
metadata:
  name: my-first-pod    # ชื่อ Pod (ต้องไม่ซ้ำใน namespace)
  labels:
    app: web            # ป้ายกำกับ ไว้ให้ Service/ตัวอื่นค้นเจอ
spec:
  containers:
    - name: nginx       # ชื่อ container ภายใน Pod
      image: nginx:1.27 # image ที่จะรัน (ระบุเวอร์ชันชัดเจน)
      ports:
        - containerPort: 80
pod.yaml — Pod รัน nginx หนึ่งตัว
kubectl apply -f pod.yaml        # สร้าง Pod ตามไฟล์
kubectl get pods                 # ดูสถานะ (รอจนขึ้น Running)
kubectl describe pod my-first-pod # ดูรายละเอียด/เหตุการณ์
kubectl port-forward my-first-pod 8080:80  # เปิดทดสอบที่ localhost:8080
kubectl delete pod my-first-pod  # เก็บกวาดเมื่อเสร็จ
สร้าง Pod แล้วตรวจสอบ

K8s Scheduler & Self-Healing

ตั้งจำนวน Pod ที่อยากได้ (desired) แล้วดู Scheduler วางลง node ที่ว่าง · ลองปิด node เพื่อดู Pod ถูกย้ายไปที่อื่นให้ครบเสมอ

Desired replicas:
4
(แต่ละ node รับได้ 4 Pod)
node-1
Pod
Pod
Pod
Pod
node-2
Pod
Pod
Pod
Pod
node-3
Pod
Pod
Pod
Pod
4
Desired
4
Running
0
Pending

✅ Scheduler กระจาย 4 Pod ลง node ที่ว่างอย่างสมดุล — ลองกด "ปิด node" ดูว่า Pod ถูกย้ายไปที่อื่นทันที

ลองเล่น: เพิ่ม Pod แล้วดู Scheduler วางลง node ที่ว่าง · ปิด node เพื่อดู self-healing ย้าย Pod

สรุป Key Takeaways

  • Pod = หน่วยเล็กสุดที่ K8s รัน (ห่อ container ≥1 ตัวที่แชร์ IP และ storage)
  • container ใน Pod เดียวกันคุยกันผ่าน localhost
  • สร้าง Pod ด้วยไฟล์ YAML (apiVersion/kind/metadata/spec) แล้ว kubectl apply -f
  • Pod เดี่ยวไม่ self-heal — production ใช้ Deployment ห่อเสมอ
อ่านจบแล้วอย่าลืมทำเครื่องหมาย