DEV Community

Tossapol Ritcharoenwattu
Tossapol Ritcharoenwattu

Posted on

Kubernetes Workshop1 : Step2 : Pods คืออะไร

Pod = หน่วยเล็กที่สุดที่ Kubernetes ใช้รันงานจริง

  • เป็น กล่องเล็ก ๆ ที่ห่อหุ้ม 1 หรือหลาย container ที่ต้องทำงานร่วมกัน
  • แชร์ Network → ทุก container ใน Pod คุยกันผ่าน localhost
  • แชร์ Storage → ใช้ Volume ร่วมกันได้
  • ถูกออกแบบให้ เกิด-ดับง่าย (ephemeral) ถ้ามี pod ใดตาย kubernetes จะสร้าง pod มาทดแทนอัตโนมัติ

Kubernetes จะไม่จัดการ container ตรง ๆ แต่ใช้ Pod เป็นตัวกลาง
เพราะต้องจัดการ networking, storage, scaling ได้ง่ายขึ้น
+-----------------------------+
| Pod |
| +-----------------------+ |
| | Container A | |
| +-----------------------+ |
| | Container B | |
| +-----------------------+ |
| แชร์ Network + Volumes |
+-----------------------------+
จากภาพนี้ ใน 1 pod มี container A และ B ทำงานร่วมกันโดยมีการ ใช้ network และ storage ร่วมกัน

ตัวอย่างไฟล์ yaml ที่ใช้ในการสร้าง pod

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: nginx
      image: nginx
Enter fullscreen mode Exit fullscreen mode

การเขียนไฟล์ yaml ในการสร้าง pod จะมี tag หลักๆ อยู่ 4 tag อธิบายแยกที่ละส่วนคือ

apiVersion: v1
Enter fullscreen mode Exit fullscreen mode

ระบุว่าใช้ API version อะไรใน Kubernetes
สำหรับ Pod → ใช้ v1

kind: Pod
Enter fullscreen mode Exit fullscreen mode

บอกว่า YAML นี้จะสร้าง ทรัพยากรชนิดไหน
ที่นี่คือ Pod

metadata:
  name: mypod
Enter fullscreen mode Exit fullscreen mode

ใช้กำหนด ข้อมูลบอกตัวตนของทรัพยากร
ที่นี่ระบุ name: mypod → ชื่อ Pod คือ mypod

spec:
  containers:
    - name: nginx
      image: nginx
Enter fullscreen mode Exit fullscreen mode

ส่วน spec คือการบอกว่าอยากให้ Pod ทำอะไร
containers → คือ รายการ container ที่จะรันใน Pod นี้
ในตัวอย่างนี้:
name: nginx → ตั้งชื่อ container ว่า nginx
image: nginx → ใช้ Docker image ชื่อว่า nginx

Pod นี้ จะรัน container nginx หนึ่งตัว

Top comments (0)