ทำความรู้จัก Kubernetes คืออะไร มีประโยชน์อย่างไร?
เชื่อว่าหลายคนคงเคยได้ยินชื่อ Kubernetes กันมาบ้างแล้วแต่ไม่รู้ว่ามันคืออะไร ใช้ทำหน้าที่อะไรกันแน่ ในบทความนี้เราก็จะมาพูดถึง Kubernetes คืออะไร ทำไมเป็นโซลูชันที่นำเสนอการจัดการ Container ติดตามอ่านได้ในบทความนี้
Contents
Kubernetes คืออะไร?
Kubernetes (K8s) คือ Open-Source Orchestration Tool ที่ออกแบบมาเพื่อทำให้การปรับใช้ การปรับขนาด และการจัดการแอปพลิเคชัน Container เป็นไปโดยอัตโนมัติ Kubernetes ถูกพัฒนาโดย Google และได้บริจาคให้กับ Cloud Native Computing Foundation (CNCF) ในเวลาต่อมา Kubernetes มอบ Framework ที่มีประสิทธิภาพสำหรับการจัดการทรัพยากรของโครงสร้างพื้นฐานที่ซับซ้อนและยังช่วยให้แอปพลิเคชันสามารถทำงานบน Container ได้ตลอดเวลาอีกด้วย
โครงสร้างของ Kubernetes
โครงสร้างของ Kubernetes ประกอบไปด้วย Master Node และ Worker Nodes ตัว Master Node จะจัดการการทำงานของ Cluster ทั้งหมด ในขณะที่ Worker Nodes จะทำหน้าที่ Run Container
ส่วนประกอบของ Master Node
1. API Server
เป็นจุดเริ่มต้นของการติดต่อกับ Cluster ทั้งหมด โดยจะทำหน้าที่คอยตรวจสอบและประมวลผลคำขอของ API
2. Etcd
ระบบ Distributed Key Value Store ทำหน้าที่เก็บรักษาข้อมูลต่างๆที่ใช้ในการบริหารจัดการ Cluster ทั้งหมด
3. Scheduler
ทำหน้าที่กำหนด Pod ที่จะไปอยู่ใน Node เพื่อหา Node ที่มีประสิทธิภาพและความพร้อมใช้งานกับ Pod มากที่สุด
4. Controller Manager
ทำหน้าที่ตรวจสอบสถานะของ Cluster โดยจะจัดการการทำงานต่างๆ เช่น การจำลอง Pod เป็นต้น
ส่วนประกอบของ Worker Node
1. Kubelet
เป็นสื่อกลางที่คอยติดต่อระหว่าง Master Node และ Worker Node โดยจะทำหน้าที่จัดการสถานะของ Node แต่ละตัวภายใน Cluster และตรวจสอบให้แน่ใจว่า Container ที่ทำงานบนในแต่ละ Node สามารถทำงานได้อย่างถูกต้อง
2. Kube Proxy
ทำหน้าที่ดูแลเครือข่ายการสื่อสารระหว่างบริการภายใน Cluster เพื่อให้บริการต่างๆสามารถเข้าถึงกันได้แม้จะมีการปรับใช้บน Node ที่แตกต่างกันก็ตาม
3. Container Runtime
ทำหน้าที่รับผิดชอบการจัดการกับทรัพยากรที่จำเป็นสำหรับ Containers บน Pod นอกจากนี้ยังช่วยจัดการเรื่องเครือข่าย การจัดเก็บข้อมูลและด้านอื่นๆที่ช่วยให้ Containers สามารถทำงานได้ดียิ่งขึ้น โดย Container Runtime ที่พบได้บ่อยมี Docker, Container, rkt และอื่น ๆ
4. Pod
หน่วยที่มีความสามารถในการประมวลผลที่เล็กที่สุดใน Kubernetes โดยภายใน Pod จะประกอบไปด้วย Container และทรัพยากรของ Container เช่น IP Address และ Storage เป็นต้น
5. ReplicaSets and Deployments
ReplicaSets ทำหน้าที่กำหนดจำนวนของ Pod ที่ต้องการให้มีการทำงาน ส่วนเจ้าตัว Deployments จะทำหน้าที่เป็นตัวกำหนดว่าต้องการ ReplicaSet กี่ชุด และในแต่ละ pods ต้องมีอะไรอยู่ข้างในบ้าง
6. Services and Networking
ทำหน้าที่กระจาย Load Balance ไปยัง Pod เพื่อให้มั่นใจได้ว่าแอปพลิเคชันจะยังคงสามารถเข้าถึงได้แม้ว่า Pod จะถูกสร้างใหม่หรือย้ายออกไปก็ตาม และในส่วนของ Networking จะเกี่ยวข้องกับการจัดการการสื่อสารระหว่าง Pod, Service และทรัพยากรเครือข่ายอื่นๆภายใน Cluster โดย Kubernetes จะใช้ Flat Network Model ซึ่ง Pod แต่ละอันจะได้รับที่อยู่ IP ของตัวเองและสามารถสื่อสารโดยตรงกับ Pod อื่น ๆ ได้เลย
ประโยชน์ของ Kubernetes
1. Scalability
Kubernetes ช่วยให้แอปพลิเคชันสามารถปรับขนาดได้อย่างง่ายดายยิ่งขึ้น โดยสามารถเพิ่มหรือลบ Container ได้ตามความต้องการ นอกจากจะช่วยจัดการการใช้ทรัพยากรได้อย่างเหมาะสมแล้วยังช่วยจัดการกับจำนวนคนที่เข้าใช้งานที่เพิ่มขึ้นอย่างรวดเร็วให้มีประสิทธิภาพมากขึ้นอีกด้วย
2. High Availability
Kubernetes รองรับการ Load Balance โดยอัตโนมัติ ทำให้แอปพลิเคชันจะยังคงใช้งานได้แม้ว่า Node หรือ Container บางตัวจะล้มเหลวก็ตาม
3. Container Orchestration
Kubernetes มีความเชี่ยวชาญในการจัดการและควบคุมแอปพลิเคชันในรูปแบบของ Container ทำให้การปรับใช้ การปรับขนาด และการจัดการบริการของ Container สามารถเป็นไปได้โดยอัตโนมัติ
4. Ecosystem and Community
Kubernetes มีเครื่องมือและปลั๊กอินมากมายที่ช่วยปรับปรุงฟังก์ชันการทำงาน รวมถึงมีชุมชนขนาดใหญ่ (Community) ที่คอยช่วยกันพัฒนาและสนับสนุนอย่างต่อเนื่อง
Ref: cloud.google
💬🙋♂️ สอบถามเพิ่มเติมสามารถติดต่อมาได้ที่
☎ Tel: 02-718-1599
✉ Email: info@ert.co.th
📱 Line: https://lin.ee/wtyQVtl