Pods
Pod เป็นหน่วยพื้นฐานที่เล็กที่สุดใน Kubernetes สำหรับการจัดการและปรับใช้คอนเทนเนอร์ Pod สามารถมีคอนเทนเนอร์หนึ่งตัวหรือหลายตัวที่ทำงานร่วมกันในกลุ่มเดียวกัน และแชร์ทรัพยากรบางอย่าง เช่น Network และ Storage
คุณสมบัติของ Pods
-
Single IP Address
- Pod แต่ละตัวจะมี IP Address ของตัวเอง ซึ่งใช้ร่วมกันระหว่างคอนเทนเนอร์ภายใน Pod
-
Shared Storage
- คอนเทนเนอร์ใน Pod เดียวกันสามารถแชร์ Volume ได้
-
การสื่อสารระหว่างคอนเทนเนอร์
- คอนเทนเนอร์ภายใน Pod เดียวกันสามารถสื่อสารกันผ่าน localhost
-
Lifecycle
- Pod มีวงจรชีวิตของตัวเอง ตั้งแต่การเริ่มต้นจนถึงการหยุดทำงาน
การใช้งาน Pods
การสร้าง Pod ด้วย YAML
ตัวอย่างไฟล์ YAML สำหรับการสร้าง Pod:
apiVersion: v1
kind: Pod
metadata:
name: my-pod
labels:
app: my-app
spec:
containers:
- name: my-container
image: nginx
ports:
- containerPort: 80
คำสั่งสำหรับสร้าง Pod:
kubectl apply -f my-pod.yaml
การตรวจสอบสถานะของ Pods
-
ดูรายการ Pods ทั้งหมด
kubectl get pods -
ดูรายละเอียดของ Pod
kubectl describe pod <pod-name> -
ดู Logs ของ Pod
kubectl logs <pod-name>
การลบ Pod
-
ลบ Pod ด้วยชื่อ
kubectl delete pod <pod-name> -
ลบ Pod ด้วยไฟล์ YAML
kubectl delete -f my-pod.yaml
การ Debug Pod
- เข้าสู่ Pod เพื่อ Debug
kubectl exec -it <pod-name> -- /bin/bash
การปรับแต่ง Pod
-
Environment Variables กำหนดค่า Environment Variables ในคอนเทนเนอร์:
env:
- name: ENV_VAR_NAME
value: "value" -
Volumes กำหนด Volume สำหรับแชร์ข้อมูลระหว่างคอนเทนเนอร์ใน Pod:
volumes:
- name: shared-data
emptyDir: {} -
Liveness และ Readiness Probes ใช้ตรวจสอบสุขภาพของคอนเทนเนอร์:
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 3
periodSeconds: 5
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 3
periodSeconds: 5
Pod Lifecycle
-
Pending
- Pod ถูกสร้าง แต่ยังไม่ได้เริ่มคอนเทนเนอร์
-
Running
- คอนเทนเนอร์ใน Pod กำลังทำงาน
-
Succeeded
- คอนเทนเนอร์ทั้งหมดใน Pod หยุดทำงานและสำเร็จ
-
Failed
- คอนเทนเนอร์ใน Pod หยุดทำงานและล้มเหลว
-
Unknown
- Kubernetes ไม่สามารถตรวจสอบสถานะของ Pod ได้
Pods เป็นหัวใจหลักของ Kubernetes การเข้าใจโครงสร้างและการทำงานของ Pod จะช่วยให้คุณสามารถปรับใช้และจัดการแอปพลิเคชันใน Kubernetes ได้อย่างมีประสิทธิภาพ