[EP.5] PODs Concept

Kubernetes Application Developer — K8s Series

Saritrat Jirakulphondchai
2 min readDec 28, 2019

← Previous [EP.4] Kubernetes Architecture

Else go to → [EP.0] Kubernetes Content

จากบทที่แล้วๆ ที่ได้กล่าวมา K8s ไม่ได้มีการ Deploy Containers ตรงๆ บน Worker Node แต่ Containers นั้นจะถูกห่อด้วย Object ของ K8s อีกที ซึ่ง Object นั้นเราจะรู้จักกันในชื่อ “POD” บทนี้เราจะมาเล่ารายละเอียดต่างๆ ให้ฟัง

สิ่งที่ได้เรียนรู้ในครั้งนี้

  1. PODs คืออะไร
  2. PODs & Scale

PODs คืออะไร

POD คือ object ที่เล็กที่สุดที่ K8s สามารถสร้างได้ PODs สามารถมี Container อยู่ภายในได้มากกว่า 1 Container แต่จะไม่ใช่ Container ชนิดเดียวกันเช่น ถ้ามี Node.js ใน PODs แล้ว Container อื่นๆ ที่สร้างจะไม่ใช่ Node.js แต่จะเป็นอย่างอื่นแทน

จากที่กล่าวมานั้นจะทำให้เห็นว่า เมื่อ PODs ถูกสร้างขึ้น Container หลายๆ ตัวที่อยู่ใน PODs นั้นๆ จะถูกสร้างขึ้นดัวยทันที และถ้า PODs ตายก็ Container ก็จะตายหมดเช่นกัน Container ที่อยู่ภายใน PODs จะคุยกันผ่าน network ภายในที่ถูก share กันระหว่าง Node (localhost) ใน cluster

PODs & Scale

จะเกิดอะไรขึ้นถ้าจำนวนผู้ใช้งาน App ของเราเพิ่มขึ้น นั่นเป็นเหตุผลว่าทำไม App ของเราต้องการ Scale ดังนั้นวิธีการ Scale โดยพื้นฐานแล้วคือการเพิ่ม instance ของ Server เพิ่มมารับโหลดของจำนวนผู้ใช้งาน

ถ้าเราจะนำเทคนิคข้างต้นมาใช้งานใน K8s เราจะเพิ่ม Instance ไว้ในไหน? คำตอบคือ “เราจำเป็นต้องเพิ่ม PODs ขึ้นมาอีก” แล้วทำไมถึงไม่เพิ่ม Container ใน PODs ละ ? เพราะว่า “เวลา POD ตายไป Container ตัวอื่นๆ ที่อยู่ใน POD ก็จะตายไปทั้งหมด” ดังนั้นเราจึงจำเป็นต้องเพิ่ม POD เพื่อทำการ Scale มาเพื่อลองรับโหลดจากจำนวนผู้ใช้งานที่มากมายมหาศาลนั่นเอง

แต่!! มันก็ไม่มีประสิทธิภาพอยู่ดี ถ้าเราจะมี POD หลาย POD ใน Node เดียว ดังนั้นเมื่อเรา Scale ไปได้ระยะนึงเราจำเป็นต้องเพิ่ม Node ที่ถูกแทนด้วยเครื่องหนึ่งเครื่อง Server จริงๆ ด้วยเพื่อ Scale ได้อย่างมีประสิทธิภาพมากขึ้นดังภาพ

สรุป

PODs คือหน่วยที่เล็กที่สุดที่ K8s จะสร้างได้ สามารถมีหลาย Container ในตัวมันได้ในส่วนของการ Scale นั้นถูกแบ่งออกมาเป็น 2 ระดับ ระดับแรกคือเพิ่มจำนวน PODs ใน Node ก่อน ถ้ามีจำนวนผู้ใช้งานมากขึ้นเราจำเป็นต้อง Scale ไปในระดับที่ 2 คือเพิ่มจำนวนเครื่อง​ Server จริงๆ ซึ่งถูกตั้งไว้ให้เป็น Node ใน K8s ดังนั้นจะเห็นว่า Node แต่ละ Node อยู่คนละเครื่องกันแต่ Node สามารถคุยผ่าน Network ใน Cluster เดียวกันได้นั่นเอง จึงทำให้การ Scale ได้อย่างมีประสิทธิภาพ

บทความนี้เป็นบทความที่เกิดจากการทำความเข้าใจของเจ้าของกระทู้เอง ถ้าผิดพลาดประการใด ขออภัย ณ ที่นี้ด้วย และท่านผู้หลงเข้ามาอ่านสามารถ comment เพื่อ discuss กับเจ้าของกระทู้ได้เลยครับ “ไม่ต้องเกรงใจ”

หากใครชอบบทความอย่าลืม clap / share เพื่อเป็นกำลังใจให้เจ้าของกระทู้เขียนบทความต่อไป ขอบคุณครับ

Next → [EP.6] Kubernetes ReplicaSets Concept

Else go to → [EP.0] Kubernetes Content

--

--

No responses yet