ข้ามไปที่เนื้อหาหลัก

Kubernetes เทคโนโลยี Container การสร้างระบบยุคใหม่


วิวัฒนาการสถาปัตยกรรม Kubernetes

ตอนเริ่มต้นในการพัฒนาซอฟต์แวร์ในระยะแรกอยู่ในรูปแบบที่เรียกว่า Traditional Develoment ต่อมาเริ่มมีการพัฒนาเป็น Virtualized Development และจนมาถึง Container Development แต่ล่ะระยะมีดังนี้ 

- Tradition Development
- Virtualized Development
- Container Development

- Traditional Development 

ในระยะเริ่มแรกของการพัฒนาแอปพลิเคชันสำหรับการใช้งาน องค์กรและผู้ทำการพัฒนาจะนำแอปพลิเคชั่นไปทำงานบนเครื่องเซิร์ฟเวอร์จริง โดยยังไม่มีวิธีกำหนดการใช้ทรัพยากรต่างๆ บนเซิร์ฟเวอร์ ทำให้เกิดปัญหาการใช้งานมีประสิทธิภาพที่ต่ำลงเมื่อเซิรฟ์เวอร์นั้น มีการให้บริการหรือใช้งานงานแอพลิเคชั่นหลายบริการ กล่าวคือ แอปพลเคชั่นบางตัวใช้ทรัพยากร ram hd เป็นจำนวนมากจนมีผลต่อการทำงานของแอพลเคชั่นอื่นๆตามมาแต่สิ่งนี้ไม่ได้ปรับขนาดเนื่องจากมีการใช้ทรัพยากรน้อยเกินไป และมีค่าใช้จ่ายสูงสำหรับองค์กรในการบำรุงรักษาเซิร์ฟเวอร์จริงจำนวนมาก


- Virtualized Development

เป็นโซลูชันสำหรับการจำลองเครื่องเสมือน ซึ่งอนุญาตให้คุณรัน Virtual Machines (VM) หลายเครื่องบน CPU ของเซิร์ฟเวอร์จริงเครื่องเดียว ช่วยให้สามารถแยกการทำงานของแอปพลิเคชันระหว่าง VMs ให้มีระดับความปลอดภัย ทำให้ข้อมูลของแอปพลิเคชันหนึ่งไม่สามารถเข้าถึงได้โดยอิสระจากแอปพลิเคชันอื่น

การจำลองเครื่องเสมือนช่วยให้สามารถใช้ทรัพยากรในเซิร์ฟเวอร์จริงได้ดีขึ้นและช่วยให้สามารถปรับขนาดได้ดีขึ้น เนื่องจากเราสามารถเพิ่มหรืออัปเดตแอปพลิเคชันได้อย่างง่ายดาย ลดค่าใช้จ่ายด้านฮาร์ดแวร์ และอื่นๆ อีกมากมาย และคุณสามารถแนะแนวทางการใช้ชุดของทรัพยากรทางกายภาพเป็นคลัสเตอร์ของเครื่องเสมือนแบบใช้แล้วทิ้ง 



- Container Development

คอนเทนเนอร์นั้นมีลักษณะการทำงานคล้ายกับ VM แต่มีคุณสมบัติการเพื่อเติมสำหรับการแชร์ระบบปฏิบัติการ (OS) ระหว่างแอปพลิเคชัน ดังนั้นถือว่าตู้คอนเทนเนอร์ขนาดเล็ก เพราะเป็นการย่อส่วนของระบบขนาดใหญ่ให้เล็กลง โดยจำกัดการทำงาน ทรัพยกรต่างๆ ที่ใช้งานเฉพาะส่วนที่จำเป็นเท่านั้น คอนเทนเนอร์จะมีระบบไฟล์ ส่วนแบ่งของ CPU หน่วยความจำ พื้นที่ประมวลผล และอื่นๆ เนื่องจากแยกออกจากโครงสร้างพื้นฐานพื้นฐาน จึงพกพาได้บนคลาวด์และการกระจายระบบปฏิบัติการ


ความหมายของ Kubernetes 

“Kubernetes” หรือ “K8s” คือ “Container Orchestration”  คือ
- เป็นรูปสถาปัตยกรรมของระบบโครงสร้างพื้นฐานทางไอที (infrastructure) ในยุคใหม่ มีลักษณะเป็นซอฟต์แวร์ที่ใช้จัดการและควบคุม  โดยใช้เทคโนโลยีที่เรียกว่า "คอนเทนเนอร์(Container)" ซึ่งถูกสร้างและพัฒนาขึ้นมาเพื่อผู้พัฒนาสามารถจัดการแพ็กเกจซอฟต์แวร์ต่างๆ ที่จำเป็นในการใช้งาน และทำการขนย้ายมันไปใช้ตามที่ต่างๆ หรือ server ต่างๆ ได้ง่ายและเป็นอิสระต่อกัน และทำการ run แต่ละคอนเทนเนอร์ในเครื่องที่ได้ทำการติดตั้งคอนเทนเนอร์นั้นๆ 
- Kubernetest เป็นซอฟต์แวร์ OpenSource พัฒนาโดย Google ที่จะมาช่วยในการจัดการคอนเทนเนอร์ เช่น Docker LXC  ช่วยให้เราสามารถติดตั้ง (Deployment) จัดสรรทรัพยากร หรือเพิ่มลดทรัพยากรแบบอัตโนมัติได้ (Managing & Scaling) นอกจากนั้นยังช่วยให้ Application ที่ทำงานอยู่บนคอนเทนเนอร์สามารถทำงานได้อย่างต่อเนื่อง ด้วยระบบที่พร้อมใช้งานตลอดเวลา (Auto Self-Healing) 

ความเป็นมาของ Kubernetes 


ต้นกำเนิดของ K8s นั้นเกิดมาจากบริษัท Google ในเรื่องจัดการ Data Center เรียกระบบนี้ว่า “Borg” ปรับมาเป็น “Kubernetes” ขึ้นมา การใช้งานมายาวนานทำให้ google พบปัญหาในเรื่องการจัดการ Data Center หลายประการ เนื่องจากมีการขยายตัวของการใช้งานที่เพิ่มมากขึ้นทุกๆ ปี 



ประโยชน์ของ Kubernetes ที่ถูกพัฒนาขึ้นอย่างอัตโนมัติ

  1. Container Clustering :  ผู้ใช้สามารถ Configuration  เพื่อสั่งระบบให้ทำงานโดยอัตโนมัติ เพียงแค่กำหนดค่าต่างๆ ที่เกี่ยวข้อง
  2. Auto Scaling : รองรับการเพิ่มหรือลดทรัพยากรได้
  3. Auto Self-healing :  HA เพื่อช่วยให้ระบบสามารถทำงาน
  4. Auto Binpacking : จัดสรรทรัพยากรสำหรับคอนเทนเนอร์
  5. Load Balancing : แบ่งการทำงานระหว่างคอนเทนนอร์ได้อย่างเหมาะสมและมีประสิทธิภาพสูงสุด
  6. Zero Downtime : รองรับการอัปเดตระบบแบบไม่มี Downtime
  7. Dashboard : มีแดชบอร์ดสำหรับควบคุมและบริหารจัดการทรัพยากร
  8. Community :  มีผู้ใช้งานจากทั่วโลกช่วยพัฒนาและอัปเดตฟีเจอร์ใหม่ อยู่ตลอดเวลา

องค์ประกอบของ Kubernetes(K8s)

  1. คัสเตอร์ (Cluster)
  2. การพัฒนา (Developmet)
  3. โหนดและพอร์ด (Node and Pod)
  4. ชุดแบบจำลอง (ReplicaSet)
  5. การบริการ (Services)



อ้างอิงแหล่งข้อมูล : 

1. openlandscape. 2022. Kubernetes คือ อะไร ? หนทางสู่การทำระบบให้แกร่งกว่าที่เคย. https://blog.openlandscape.cloud/what-is-kubernetes [online].
2. blognone. Kubernetes คืออะไร ทำไม Orchestration จึงเป็นหัวใจของ Infrastructure ยุคนี้. [online] https://www.blognone.com/node/106492.
3. skooldio. 5 ข้อดี Kubernetes ที่สาย Dev ต้องเหลียวมอง. [online]. https://blog.skooldio.com/why-use-kubernetes/. 







ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

สำรองข้อมูลใน MySQL ด้วย mysqldump ข้อมูลใน MySQL Character-set ภาษาไทย

การ backup ฐานข้อมูลสำหรับ mysql ในบางครั้งจะเกิดปัญหาสำหรับการใช้งานภาษาไทย ที่ตัวอักษรมักจะเกิดเป็น ?????  จึงต้องทำให้มั่นใจก่อนว่า การจัดเก็บข้อมูลที่เป็นภาษไทย สมบูรณ์ จึงมีการแปลง character set ก่อน สำหรับในการแปลงฐานข้อมูลจากเดิมที่เป็น latin1 หรือ tis620 ให้เป็น utf8 มีเงื่อนไขเบื้องต้นว่า หาก character-set ของฐานข้อมูลเป็น tis620 หรือ  latin1 ต้องไม่กำหนดค่า default-character-set=utf8 ใน my.cnf (สำหรับ Linux อยู่ที่ /etc/my.cnf หรือ /etc/mysql/my.cnf)

Interactive เทคโนโลยีเชิงโต้ตอบเปลี่ยนโลกเข้าสู่ยุค Metaverse

เทคโนโลยี Interactive คืออะไร คำนิยามของ เทคโนโลยี Interactive ที่สร้างและพัฒนาขึ้นสำหรับโปรแกรมหรือแอพลิเคชั่นที่เป็น Real-Time เรียกง่ายๆว่า Real-Time Programming (RTP) โดยเน้นไปยังผู้ใช้หรือมนุษย์นั้นเอง จะประกอบไปด้วย 2 องค์ประกอบ คือ ส่วนแรก เทคโนโลยี Interactive เข้าทำการเปลี่ยนแปลรูปร่าง ขนาด และรูปแบบ ซึ่งมาจาก web service อุปกรณ์ sensor ผ่านคอมพิวเตอร์ และมือถือ เป็นผสมผสานระหว่างระบบดิจิทัลและแอนนาล๊อกเข้าด้วยกัน ผ่านปุ่ม สไลด์เดอร์ หรือสวิทซ์ เพื่อการควบคุมในส่วนควบคุมทั้งหมด ที่เรียกว่า Control panel  ส่วนที่ 2  แอพลิเคชั่นที่ทำงานแบบ Real Time Application ถูกออกแบบในแนวคิดหลักของเทคโนโลยี Real Time  อ้างอิง https://interactiveimmersive.io/blog/beginner/02-interactive-technology/ เทคโนโลยีเชิงโต้ตอบที่เน้นการสร้างต้นแบบที่เร็วขึ้น มีประโยชน์อย่างมากในแอปพลิเคชันและประสบการณ์การสร้างต้นแบบ  ประเภทของเทคโนโลยี Interactive  มี 6 ประเภท 1. IoT เป็นแนวคิดจะเปลี่ยนบริการทุกบริการให้อยู่บนเครือข่ายอินเทอร์เน็ต และสามารถเชื่อมต่อเข้ากับแอพลิเคชั่นทุกแอพลเคชั่นทั้งที่ถูกพัฒนาเอง แล