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
ส่วนใหญ่ 1 Pod = 1 container · เพิ่ม sidecar ได้เมื่อต้องอยู่ติดกันจริง ๆ
🧪 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: 80kubectl 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 # เก็บกวาดเมื่อเสร็จK8s Scheduler & Self-Healing
ตั้งจำนวน Pod ที่อยากได้ (desired) แล้วดู Scheduler วางลง node ที่ว่าง · ลองปิด node เพื่อดู Pod ถูกย้ายไปที่อื่นให้ครบเสมอ
✅ Scheduler กระจาย 4 Pod ลง node ที่ว่างอย่างสมดุล — ลองกด "ปิด node" ดูว่า 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 ห่อเสมอ

