บทช่วยสอน Kubernetes สำหรับผู้เริ่มต้น: พื้นฐาน, คุณสมบัติ, Archiเทคเจอร์
ก่อนที่เราจะเริ่มบทช่วยสอน Kubernetes นี้ มาเรียนรู้กันก่อน:
Kubernetes คืออะไร
Kubernetes เป็นระบบจัดการคอนเทนเนอร์ที่พัฒนาบนแพลตฟอร์ม Google Kubernetes ช่วยจัดการแอปพลิเคชันคอนเทนเนอร์ในสภาพแวดล้อมทางกายภาพ เสมือน และบนคลาวด์ประเภทต่างๆ Google Kubernetes เป็นเครื่องมือคอนเทนเนอร์ที่มีความยืดหยุ่นสูงในการส่งมอบแอปพลิเคชันที่ซับซ้อนที่ทำงานบนคลัสเตอร์เซิร์ฟเวอร์ตั้งแต่หลายร้อยถึงหลายพันเครื่องอย่างสม่ำเสมอ
ทำไมคุณถึงต้องการคอนเทนเนอร์?
ผู้ใช้อินเทอร์เน็ตในปัจจุบันไม่เคยยอมรับการหยุดทำงาน ดังนั้นนักพัฒนาจึงต้องหาวิธีในการบำรุงรักษาและอัพเดตโดยไม่รบกวนการบริการของตน
ดังนั้นคอนเทนเนอร์จึงเป็นสภาพแวดล้อมที่แยกจากกัน ซึ่งรวมทุกสิ่งที่จำเป็นสำหรับการรันแอปพลิเคชัน ทำให้ผู้พัฒนาสามารถแก้ไขและปรับใช้แอปพลิเคชันได้ง่าย นอกจากนี้ การทำคอนเทนเนอร์ยังกลายเป็นวิธีการที่นิยมใช้ในการแพ็คเกจ ปรับใช้ และอัปเดตแอปพลิเคชันบนเว็บ
Kubernetes ทำหน้าที่อะไร?
Kubernetes เป็นเคอร์เนล Linux ที่ใช้สำหรับระบบแบบกระจาย ช่วยให้คุณเข้าใจถึงฮาร์ดแวร์พื้นฐานของโหนด (เซิร์ฟเวอร์) และนำเสนออินเทอร์เฟซที่สอดคล้องกันสำหรับแอปพลิเคชันที่ใช้แหล่งทรัพยากรที่ใช้ร่วมกัน
ทำไมต้องใช้ Kubernetes?
Kubernetes ช่วยให้คุณควบคุมการจัดสรรทรัพยากรและการจัดการการรับส่งข้อมูลสำหรับแอปพลิเคชันระบบคลาวด์และไมโครเซอร์วิส นอกจากนี้ยังช่วยลดความซับซ้อนในด้านต่างๆ ของโครงสร้างพื้นฐานที่มุ่งเน้นการบริการ Kubernetes ช่วยให้คุณมั่นใจได้ว่าแอปพลิเคชันในคอนเทนเนอร์จะทำงานที่ไหนและเมื่อใด และช่วยให้คุณค้นหาทรัพยากรและเครื่องมือที่คุณต้องการใช้งาน
คุณสมบัติของ Kubernetes
นี่คือคุณสมบัติที่สำคัญของ Kubernetes:
- การตั้งเวลาอัตโนมัติ
- ความสามารถในการรักษาตนเอง
- การเปิดตัวและการย้อนกลับอัตโนมัติ
- การปรับขนาดแนวนอนและการปรับสมดุลโหลด
- นำเสนอสภาพแวดล้อมที่สม่ำเสมอสำหรับการพัฒนา การทดสอบ และการผลิต
- โครงสร้างพื้นฐานที่เชื่อมต่ออย่างหลวมๆ กับแต่ละองค์ประกอบสามารถทำหน้าที่เป็นหน่วยแยกกันได้
- ให้ความหนาแน่นของการใช้ทรัพยากรที่สูงขึ้น
- เสนอคุณสมบัติที่พร้อมสำหรับองค์กร
- การจัดการแอปพลิเคชันเป็นศูนย์กลาง
- โครงสร้างพื้นฐานที่ปรับขนาดได้อัตโนมัติ
- คุณสามารถสร้างโครงสร้างพื้นฐานที่คาดเดาได้
ข้อมูลพื้นฐานเกี่ยวกับ Kubernetes
ในบทช่วยสอน Kubernetes นี้ เราจะเรียนรู้พื้นฐานที่สำคัญบางประการของ Kubernetes:
-
Cluster
เป็นชุดของโฮสต์ (เซิร์ฟเวอร์) ที่ช่วยให้คุณรวบรวมทรัพยากรที่มีอยู่ ซึ่งรวมถึง RAM, CPU, RAM, ดิสก์ และอุปกรณ์ต่างๆ ลงในพูลที่ใช้งานได้
-
เจ้านาย
มาสเตอร์เป็นชุดของส่วนประกอบที่ประกอบเป็นแผงควบคุมของ Kubernetes ส่วนประกอบเหล่านี้ใช้สำหรับการตัดสินใจเกี่ยวกับคลัสเตอร์ทั้งหมด ซึ่งรวมถึงทั้งการกำหนดตารางเวลาและการตอบสนองต่อเหตุการณ์คลัสเตอร์
-
โหนด
เป็นโฮสต์เดียวที่สามารถทำงานบนฟิสิคัลหรือ เครื่องเสมือนโหนดควรรันทั้ง kube-proxy, minikube และ kubelet ซึ่งถือเป็นส่วนหนึ่งของคลัสเตอร์
-
namespace
เป็นคลัสเตอร์หรือสภาพแวดล้อมเชิงตรรกะ ซึ่งเป็นวิธีที่ใช้กันอย่างแพร่หลายในการกำหนดขอบเขตการเข้าถึงหรือแบ่งคลัสเตอร์
Kubernetes Archiเทคเจอร์
ด้านล่างนี้เป็นไดอะแกรมสถาปัตยกรรม Kubernetes โดยละเอียด:
มาสเตอร์โหนด
มาสเตอร์โหนดเป็นส่วนประกอบแรกและสำคัญที่สุดซึ่งรับผิดชอบการจัดการคลัสเตอร์ Kubernetes เป็นจุดเข้าสำหรับงานดูแลระบบทุกประเภท อาจมีมาสเตอร์โหนดมากกว่าหนึ่งโหนดในคลัสเตอร์เพื่อตรวจสอบความทนทานต่อข้อผิดพลาด
โหนดหลักมีส่วนประกอบต่างๆ เช่น เซิร์ฟเวอร์ API, ตัวจัดการตัวควบคุม, ตัวกำหนดเวลา และ ETCD มาดูกันทั้งหมดเลย
เซิร์ฟเวอร์ API: เซิร์ฟเวอร์ API ทำหน้าที่เป็นจุดเข้าสำหรับคำสั่ง REST ทั้งหมดที่ใช้เพื่อควบคุมคลัสเตอร์
ตารางเวลา
ตัวกำหนดเวลาจัดกำหนดการงานให้กับโหนดทาส มันเก็บข้อมูลการใช้ทรัพยากรสำหรับโหนดทาสทุกอัน มีหน้าที่กระจายภาระงาน
นอกจากนี้ยังช่วยให้คุณติดตามการใช้งานโหลดงานบนโหนดคลัสเตอร์ได้อีกด้วย ช่วยให้คุณกำหนดโหลดงานบนทรัพยากรที่พร้อมใช้งานและยอมรับโหลดงานได้
ฯลฯ
ส่วนประกอบ etcd เก็บรายละเอียดการกำหนดค่าและค่าไรท์ โดยจะสื่อสารกับส่วนประกอบส่วนใหญ่เพื่อรับคำสั่งและการทำงาน นอกจากนี้ยังจัดการกฎเครือข่ายและกิจกรรมการส่งต่อพอร์ต
โหนดผู้ปฏิบัติงาน/ทาส
โหนดผู้ปฏิบัติงานเป็นองค์ประกอบที่สำคัญอีกประการหนึ่งซึ่งประกอบด้วยบริการที่จำเป็นทั้งหมดในการจัดการเครือข่ายระหว่างคอนเทนเนอร์ สื่อสารกับโหนดหลัก ซึ่งช่วยให้คุณสามารถกำหนดทรัพยากรให้กับคอนเทนเนอร์ที่กำหนดเวลาไว้ได้
- Kubelet: รับการกำหนดค่าของ Pod จากเซิร์ฟเวอร์ API และตรวจสอบให้แน่ใจว่าคอนเทนเนอร์ที่อธิบายนั้นเปิดใช้งานและทำงานอยู่
- คอนเทนเนอร์นักเทียบท่า: นักเทียบท่า คอนเทนเนอร์ทำงานบนแต่ละโหนดของผู้ปฏิบัติงาน ซึ่งเรียกใช้พ็อดที่กำหนดค่าไว้
- Kube-proxy: Kube-proxy ทำหน้าที่เป็นตัวโหลดบาลานเซอร์และพร็อกซีเครือข่ายเพื่อให้บริการบนโหนดผู้ปฏิบัติงานเดียว
- พ็อด: พ็อดคือการรวมกันของคอนเทนเนอร์เดียวหรือหลายคอนเทนเนอร์ที่ทำงานร่วมกันบนโหนดอย่างมีเหตุผล
คำศัพท์สำคัญอื่นๆ
ตัวควบคุมการจำลองแบบ
ตัวควบคุมการจำลองคือออบเจ็กต์ที่กำหนดเทมเพลตพ็อด นอกจากนี้ยังควบคุมพารามิเตอร์เพื่อปรับขนาดแบบจำลองที่เหมือนกันของ Pod ในแนวนอนโดยการเพิ่มหรือลดจำนวนสำเนาที่รันอยู่
ชุดการจำลองแบบ
ชุดการจำลองเป็นการโต้ตอบกับการออกแบบตัวควบคุมการจำลอง โดยมีความยืดหยุ่นในการที่ตัวควบคุมจดจำพ็อดที่ต้องการจัดการ โดยจะแทนที่ตัวควบคุมการจำลองแบบเนื่องจากมีความสามารถในการเลือกการจำลองแบบที่สูงกว่า
การใช้งาน
การปรับใช้เป็นภาระงานทั่วไปที่สามารถสร้างและจัดการได้โดยตรง การตั้งค่าการจำลองการใช้งานการปรับใช้เป็นแบบเอกสารสำเร็จรูปซึ่งเพิ่มคุณลักษณะของการจัดการวงจรชีวิต
ชุดเก็บสถานะ
เป็นการควบคุมพ็อดแบบพิเศษที่ให้การสั่งและมีเอกลักษณ์เฉพาะตัว ส่วนใหญ่จะใช้เพื่อการควบคุมแบบละเอียด ซึ่งคุณมีความต้องการเฉพาะเกี่ยวกับลำดับการใช้งาน เครือข่ายที่เสถียร และข้อมูลถาวร
ชุดภูต
ชุด Daemon เป็นรูปแบบเฉพาะอีกแบบหนึ่งของตัวควบคุมพ็อดที่รันสำเนาของพ็อดบนทุกโหนดในคลัสเตอร์ ตัวควบคุมพ็อดประเภทนี้เป็นวิธีที่มีประสิทธิภาพในการปรับใช้พ็อดซึ่งช่วยให้คุณสามารถดำเนินการบำรุงรักษาและเสนอบริการสำหรับโหนดต่างๆ ได้ด้วยตัวเอง
Kubernetes กับ Docker Swarm
นี่คือความแตกต่างที่สำคัญระหว่าง Kubernetes กับ Docker.
พารามิเตอร์ | ฝูงนักเทียบท่า | Kubernetes |
---|---|---|
ขูดหินปูน | ไม่มีการปรับขนาดอัตโนมัติ | ปรับขนาดอัตโนมัติ |
โหลดบาลานซ์ | ทำการปรับสมดุลโหลดอัตโนมัติ | กำหนดการตั้งค่าการจัดสรรภาระงานด้วยตนเอง |
การแชร์ปริมาณการจัดเก็บข้อมูล | แบ่งปันปริมาณการเก็บข้อมูลกับคอนเทนเนอร์อื่น ๆ | แบ่งปันปริมาณการจัดเก็บข้อมูลระหว่างคอนเทนเนอร์หลาย ๆ ตัวภายใน Pod เดียวกัน |
การใช้เครื่องมือเข้าสู่ระบบและติดตาม | ใช้ 3rd อุปกรณ์ปาร์ตี้เช่น ELK | จัดเตรียมเครื่องมือในตัวสำหรับการบันทึกและการตรวจสอบ |
การติดตั้ง | ง่ายและรวดเร็ว | ซับซ้อนและใช้เวลานาน |
GUI | GUI ไม่พร้อมใช้งาน | GUI พร้อมใช้งาน |
scalability | การขยายขนาดจะเร็วกว่า K8S แต่ความแข็งแกร่งของคลัสเตอร์ไม่แข็งแกร่งเท่า | การขยายขนาดจะช้ากว่าเมื่อเทียบกับ Swarm แต่รับประกันสถานะคลัสเตอร์ที่แข็งแกร่งกว่า การปรับสมดุลโหลดต้องใช้การกำหนดค่าบริการด้วยตนเอง |
Load Balancing | จัดเตรียมเทคนิคการทำโหลดบาลานซ์ในตัว | กำหนดการกระบวนการเพื่อรักษาบริการในขณะที่อัปเดต |
การอัปเดตและการย้อนกลับ ปริมาณข้อมูล การบันทึกและการตรวจสอบ | การอัปเดตแบบก้าวหน้าและการตรวจสอบสถานภาพการบริการ | แชร์กับคอนเทนเนอร์ในเครื่องมือบันทึกและตรวจสอบ Pod Inbuilt เดียวกันเท่านั้น |
ข้อดีของ Kubernetes
- จัดระเบียบบริการได้ง่ายด้วยพ็อด
- ได้รับการพัฒนาโดย Google ซึ่งนำประสบการณ์อันมีค่าในอุตสาหกรรมมาหลายปีมาสู่โต๊ะ
- ชุมชนที่ใหญ่ที่สุดในบรรดาเครื่องมือออร์เคสตราคอนเทนเนอร์
- เสนอตัวเลือกพื้นที่จัดเก็บข้อมูลที่หลากหลาย รวมถึงภายในองค์กร, SAN และคลาวด์สาธารณะ
- ยึดมั่นในหลักการของโครงสร้างพื้นฐานที่ไม่เปลี่ยนรูป
- Kubernetes สามารถใช้งาน Bare Metal, OpenStack และคลาวด์สาธารณะในองค์กรได้ Google, Azure, AWSฯลฯ
- ช่วยคุณหลีกเลี่ยงปัญหาการล็อกของผู้ขาย เนื่องจากสามารถใช้ API หรือบริการเฉพาะของผู้ขายได้ ยกเว้นในกรณีที่ Kubernetes จัดเตรียมสิ่งที่เป็นนามธรรม เช่น โหลดบาลานเซอร์และพื้นที่จัดเก็บ
- การบรรจุคอนเทนเนอร์โดยใช้ kubernetes ช่วยให้ซอฟต์แวร์แพ็กเกจสามารถตอบสนองเป้าหมายเหล่านี้ได้ โดยจะเปิดใช้งานแอปพลิเคชันที่ต้องเผยแพร่และอัปเดตโดยไม่ต้องหยุดทำงาน
- Kubernetes ช่วยให้คุณมั่นใจได้ว่าแอปพลิเคชันในคอนเทนเนอร์จะทำงานได้ทุกที่และทุกเวลาที่คุณต้องการ และช่วยคุณค้นหาทรัพยากรและเครื่องมือที่คุณต้องการใช้งาน
ข้อเสียของ Kubernetes
- แดชบอร์ด Kubenetes ไม่มีประโยชน์เท่าที่ควร
- Kubernetes มีความซับซ้อนเล็กน้อยและไม่จำเป็นในสภาพแวดล้อมที่การพัฒนาทั้งหมดเสร็จสิ้นภายในเครื่อง
- การรักษาความปลอดภัยไม่ค่อยมีประสิทธิภาพ
สรุป
- คอนเทนเนอร์ช่วยให้องค์กรดำเนินการบำรุงรักษาและอัปเดตโดยไม่ขัดจังหวะบริการ
- Kubernetes เป็นตัวอย่างของระบบการจัดการคอนเทนเนอร์ที่พัฒนาในแพลตฟอร์ม Google
- ข้อได้เปรียบที่ใหญ่ที่สุดของการใช้ Kubernetes คือสามารถรัน OpenStack ในสถานที่, Google Cloud สาธารณะ, Azure, AWS เป็นต้น
- Kubernetes นำเสนอความสามารถในการจัดกำหนดการและการรักษาตนเองแบบอัตโนมัติ
- Cluster, ต้นแบบ, โหนด และเนมสเปซเป็นพื้นฐานสำคัญของ kubernetes
- โหนดหลักและโหนดงานเป็นส่วนประกอบสำคัญของสถาปัตยกรรม Kubernetes
- Replication Controllers, Replication sets, Deployment, Stateful Set, Daemon Set เป็นคำศัพท์ที่สำคัญอื่นๆ ที่ใช้ใน Kubernetes
- Docker swarm ไม่อนุญาตให้ปรับขนาดอัตโนมัติในขณะที่ Kubernetes อนุญาตให้ปรับขนาดอัตโนมัติ
- ข้อเสียเปรียบที่ใหญ่ที่สุดของ Kubenetes คือแดชบอร์ดไม่มีประโยชน์และมีประสิทธิภาพมากนัก