ป้ายกำกับ: Podman

kubernetes: Pod ฝักถั่ว Containerkubernetes: Pod ฝักถั่ว Container

ในโลกของ Containerization และ Kubernetes ทั้ง Container และ Pod เป็นหน่วยที่ใช้วันรันแอปพลิเคชันเหมือนกัน แต่มีระดับชั้น (Abstraction) และหน้าที่ที่ต่างกันอย่างชัดเจนครับ

สรุปความแตกต่างแบบเข้าใจง่าย ได้ดังนี้ครับ


Container (ตู้คอนเทนเนอร์)

Container คือ หน่วยที่เล็กที่สุดในฝั่งของ Runtime/Packaging (เช่น Docker, containerd) มันคือการแพ็กโค้ดของแอปพลิเคชัน, ไลบรารี, และ Dependencies ทั้งหมดที่จำเป็นต้องใช้ รวมเข้าด้วยกันเป็นก้อนเดียว เพื่อให้มั่นใจว่าแอปจะทำงานได้เหมือนกันในทุกสภาพแวดล้อม (Environment)

  • ทำงานในระดับ: Operating System (ใช้ Kernel ร่วมกับ Host OS)
  • สิ่งที่อยู่ข้างใน: โค้ดแอป, สภาพแวดล้อม (Environment), และไฟล์ระบบที่จำเป็นสำหรับแอปนั้นๆ ตัวเดียว
  • ตัวอย่างเทคโนโลยี: Docker Container, Containerd, Podman

Pod (ฝักถั่ว)

Pod คือ หน่วยที่เล็กที่สุดในฝั่งของ Kubernetes (Orchestration) โดย Pod จะทำหน้าที่เป็น “ตัวห่อหุ้ม” (Wrapper) ให้กับ Container อีกทีหนึ่ง โดยใน 1 Pod สามารถมี Container อยู่ข้างในได้ตั้งแต่ 1 ตัว หรือมากกว่านั้น (มักจะเรียกว่า Sidecar Container)

  • ทำงานในระดับ: Cluster Management (Kubernetes)
  • สิ่งที่อยู่ข้างใน: Container (อย่างน้อย 1 ตัว), Shared Network (IP เดียวกัน), Shared Storage (Volumes) รวมถึงข้อกำหนดในการรันต่างๆ
  • พฤติกรรมภายใน Pod: หากมีหลาย Container อยู่ใน Pod เดียวกัน พวกมันจะแชร์ Network Space ร่วมกัน ทำให้คุยกันเองผ่าน localhost ได้ทันที และเกิด-ดับพร้อมกัน

ตารางเปรียบเทียบข้อแตกต่าง

คุณสมบัติContainerPod
แนวคิดหลักการแพ็กแอปพลิเคชันและ Dependenciesหน่วยที่เล็กที่สุดที่ Kubernetes ใช้จัดการและสั่งรัน
เทคโนโลยีที่จัดการDocker, Containerd, PodmanKubernetes
การระบุที่อยู่ (IP)มี IP เป็นของตัวเองในระดับ Container Networkแชร์ IP ร่วมกัน 1 IP ต่อ 1 Pod (ทุก Container ข้างในใช้ IP นี้ร่วมกัน)
การใช้ StorageIsolated (แยกกัน) ยกเว้นจะต่อ Volume นอกสามารถแชร์ Volume ร่วมกันระหว่าง Container ข้างในได้ง่าย
ความสัมพันธ์1 Container ทำหน้าที่ 1 อย่างเดี่ยวๆสามารถรวม Container หลัก และ Container เสริม (เช่น Logger, Proxy) ไว้ด้วยกันได้

อุปมาอุปไมยให้เห็นภาพ

  • Container เปรียบเหมือน “เมล็ดถั่ว” (หรือเมล็ดข้าวโพด): แต่ละเมล็ดคือแอป 1 ตัวที่มีทุกอย่างพร้อมเติบโต
  • Pod เปรียบเหมือน “ฝักถั่ว”: ที่ห่อหุ้มเมล็ดถั่วเอาไว้ บางฝักอาจจะมีเมล็ดถั่วแค่เมล็ดเดียว (Single-container Pod ซึ่งเป็นท่ามาตรฐาน) หรือบางฝักอาจจะมีเมล็ดถั่วเม็ดเล็กๆ พ่วงมาด้วยกัน (Multi-container Pod) แต่เวลา Kubernetes หยิบไปวางหรือสั่งย้าย มันจะหยิบไป “ทั้งฝัก” เสมอ ไม่สามารถสั่งย้ายเฉพาะเมล็ดข้างในแยกกันได้ครับ

อ่านเพิ่มเติม