สถาปัตยกรรม Kubernetes: ทุกสิ่งที่คุณต้องรู้ในปี 2022
เผยแพร่แล้ว: 2021-01-05สารบัญ
เกี่ยวกับ Kubernetes
Kubernetes เป็นแพลตฟอร์มโอเพ่นซอร์สที่มีคุณสมบัติต่างๆ เช่น การเพิ่มทรัพยากรให้สูงสุด กระบวนการปรับใช้และการอัปเดตอัตโนมัติ การปรับขนาดอัตโนมัติ การรักษาตัวเอง การย้อนกลับและการเปิดตัวอัตโนมัติ และการจัดสรรภาระงานของคอนเทนเนอร์ออร์เคสตรา และการค้นพบบริการ การรีสตาร์ทอัตโนมัติ การวางตำแหน่งอัตโนมัติ และการจำลองอัตโนมัติ เป็นต้น Kubernetes ไม่ได้เป็นเพียงผู้ประสานงานคอนเทนเนอร์เท่านั้น นอกจากนี้ยังเป็นระบบปฏิบัติการสำหรับแอปพลิเคชันบนคลาวด์
มันเหมือนกับแพลตฟอร์มสำหรับการรันแอพพลิเคชั่นที่คล้ายกับแอพพลิเคชั่นอื่นๆ ที่ทำงานบน Windows, MacOS หรือ Linux ที่มีความยืดหยุ่นมากกว่า ช่วยลดภาระในการเตรียมการและช่วยให้นักพัฒนาสามารถมุ่งเน้นไปที่เวิร์กโฟลว์ที่เน้นคอนเทนเนอร์เป็นศูนย์กลางได้อย่างสมบูรณ์เพื่อวัตถุประสงค์ในการดำเนินการแบบบริการตนเอง นักพัฒนามีข้อได้เปรียบจากระบบอัตโนมัติระดับสูงมากในการปรับใช้และการจัดการแอปพลิเคชัน สามารถรวมเข้ากับสภาพแวดล้อมใด ๆ เพื่อเพิ่มความสามารถ
อ่าน: Kubernetes เงินเดือนในอินเดีย
สถาปัตยกรรม Kubernetes
สถาปัตยกรรม Kubernetes ประกอบด้วยเลเยอร์: ชั้นบนและชั้นล่าง ในบุคคลนี้ เครื่องจริงหรือเครื่องเสมือนถูกนำมารวมกันเป็นคลัสเตอร์ เครือข่ายที่ใช้ร่วมกันใช้สำหรับการสื่อสารระหว่างแต่ละเซิร์ฟเวอร์ Kubernetes มีต้นแบบหนึ่งตัว (อย่างน้อย) ซึ่งทำหน้าที่เป็นระนาบควบคุม ซึ่งเป็นระบบจัดเก็บข้อมูลแบบกระจาย โหนดคลัสเตอร์หลายโหนดเรียกอีกอย่างว่า Kubelets
- ต้นแบบของ Kubernetes, ระนาบการควบคุม, กำหนดเวลาการปรับใช้, เปิดเผย API และจัดการคลัสเตอร์ Kubernetes โดยรวม
- โหนดคลัสเตอร์รันรันไทม์คอนเทนเนอร์ เอเจนต์สำหรับการสื่อสารกับต้นแบบ และส่วนประกอบการมอนิเตอร์อื่นๆ การบันทึก ฯลฯ
สถาปัตยกรรม Kubernetes และ ส่วนประกอบ Kubernetes มีภาพประกอบอยู่ในภาพด้านล่าง
แหล่งที่มา

มาดู ส่วนประกอบ Kubernetes กัน
ส่วนประกอบ Kubernetes
ต้นแบบ: Kubernetes Control Plane
ต้นแบบรักษาข้อมูลของทุกอ็อบเจ็กต์ใน Kubernetes เนื่องจากจัดการคลัสเตอร์ทั้งหมด จึงเรียกว่าเป็นมาสเตอร์ มันควบคุมสถานะของอ็อบเจ็กต์ รักษาการจับคู่ของสถานะจริงของระบบกับสถานะที่ต้องการ ตอบสนองต่อการเปลี่ยนแปลง ฯลฯ
ประกอบด้วยองค์ประกอบที่สำคัญสามประการดังต่อไปนี้:
- เซิร์ฟเวอร์ Kube- API: เซิร์ฟเวอร์ Kubernetes API
- Kube- Scheduler: การจัดตารางเวลาพ็อดในโหนดผู้ปฏิบัติงาน
- Kube- Controller: จัดการการจำลองพ็อด
หากมีหลายโหนดหลัก คอมโพเนนต์เหล่านี้จะถูกจำลองแบบในโหนดหลักทั้งหมด
การจัดการวงจรชีวิตสำหรับแอปพลิเคชันต่างๆ ที่มีการอัปเดต การปรับขนาด ฯลฯ ทำได้โดย API Server ทำงานเป็นเกตเวย์สำหรับลูกค้าที่ไม่ได้อยู่ในคลัสเตอร์ เซิร์ฟเวอร์ API ทำการตรวจสอบสิทธิ์ นอกจากนี้ยังทำหน้าที่เป็นตัวกลางสำหรับพ็อดและโหนด
ผู้ควบคุมทำหน้าที่ดังต่อไปนี้:
- เรียกใช้ลูปการควบคุมหลัก
- การเปลี่ยนแปลงสถานะการขับรถไปสู่สถานะที่ต้องการ
- ดูสถานะคลัสเตอร์
นอกจากนี้ยังมีการกำหนดเส้นทาง บริการพื้นที่จัดเก็บ การทำโหลดบาลานซ์ บริการเครือข่าย DNS อินสแตนซ์ VM โดยการรวมเข้ากับระบบคลาวด์สาธารณะ ตัวควบคุมต่างๆ ที่ขับเคลื่อนสถานะสำหรับการปรับขนาดอัตโนมัติ โหนด บริการและพ็อด เนมสเปซ
การจัดกำหนดการคอนเทนเนอร์ทั่วทั้งโหนดทำได้โดยตัวจัดกำหนดการภายในคลัสเตอร์ พิจารณาข้อจำกัด/การรับประกันทรัพยากรที่แตกต่างกัน หรือข้อกำหนดการต่อต้านความสัมพันธ์/ความเกี่ยวข้อง
อนุกรมวิธาน Kubernetes Control Plane แสดงอยู่ด้านล่าง:
แหล่งที่มา
โหนดคลัสเตอร์: Kubelets
Kubelets เป็นเครื่องจักรที่แตกต่างกันซึ่งมีหน้าที่ในการรันคอนเทนเนอร์ ต้นแบบดำเนินการจัดการโหนดคลัสเตอร์ เรียกอีกอย่างว่ามินเนี่ยน โหนดคลัสเตอร์ถือเป็นตัวควบคุมหลักของ Kubernetes มันขับเคลื่อน Docker ซึ่งเป็นเลเยอร์การดำเนินการของคอนเทนเนอร์
ประกอบด้วยส่วนประกอบดังต่อไปนี้:
- Pod: กลุ่มตู้คอนเทนเนอร์
- นักเทียบท่า: เทคโนโลยีที่ใช้คอนเทนเนอร์ พื้นที่ผู้ใช้ของ OS
- Kubelet: ตัวแทนคอนเทนเนอร์ที่รับผิดชอบในการดูแลชุดของ พ็อด
- Kube-proxy: กำหนด เส้นทางการรับส่งข้อมูลที่เข้ามาในโหนดจากบริการ
อนุกรมวิธานคลัสเตอร์ Kubernetes แสดงอยู่ด้านล่าง:
แหล่งที่มา
พ็อดส์และบริการ
พ็อดเป็นแนวคิดที่สำคัญใน Kubernetes ซึ่งนักพัฒนาโต้ตอบกัน มันแสดงถึงกระบวนการทำงาน สามารถโฮสต์สแต็กแอปพลิเคชันที่รวมในแนวตั้งได้ เช่น แอปพลิเคชัน WordPress LAMP ด้านล่างนี้เป็นประเภทพ็อดที่แตกต่างกัน:
ประเภทพ็อด | ฟังก์ชั่น |
ชุดจำลอง | แบบพ็อดธรรมดา![]() รับรองการทำงานของพ็อดคงที่ |
การปรับใช้ | วิธีจัดการพ็อดที่เปิดเผยผ่าน ReplicaSet รวมการอัปเดตแบบโรลลิ่งและกลไกการย้อนกลับ |
StatefulSet | จัดการพ็อดที่ควรคงอยู่ |
Daemonset | ตรวจสอบให้แน่ใจว่าแต่ละโหนดรันอินสแตนซ์ของพ็อด จัดการบริการคลัสเตอร์ เช่น การส่งต่อบันทึกและการตรวจสอบความสมบูรณ์ |
CronJob และ Job | รันงานที่อายุสั้นเป็นตัวกำหนดตารางเวลา |
พ็อดสามารถประกอบด้วยคอนเทนเนอร์จำนวนหนึ่งและวอลุ่มภายนอก อนุกรมวิธานของพ็อดแสดงในแผนภาพด้านล่าง:
แหล่งที่มา
บริการทำการติดตาม Pods สำหรับการกำหนดความสัมพันธ์ของพ็อดและการบริการ จะใช้ตัวเลือกหรือป้ายกำกับแทนการกำหนดที่อยู่ IP วิธีนี้ช่วยลดความยุ่งยากในการเพิ่มพ็อดในการบริการและการเปิดตัวเวอร์ชันใหม่ ต่อไปนี้เป็นประเภทบริการที่แตกต่างกัน:
ประเภทบริการ | ฟังก์ชั่น |
คลัสเตอร์IP | ประเภทเริ่มต้น; เปิดเผยบริการบน IP ภายในและทำให้เข้าถึงบริการได้ |
NodePort | อนุญาตให้นักพัฒนาตั้งค่าโหลดบาลานเซอร์ของตัวเองได้ |
LoadBalancer | กำหนดค่าอัตโนมัติ |
ชื่อภายนอก | มักใช้สำหรับสร้างบริการภายใน Kubernetes |
การปรับใช้คลาวด์ทั่วไปที่ใช้คือประเภท LoadBalancer Kubernetes สนับสนุนการแยกส่วน Ingress ระดับสูงเพื่อแก้ปัญหาความซับซ้อน ผู้ใช้สามารถแสดงบริการต่างๆ ภายในที่อยู่ IP เดียวกันโดยใช้ตัวโหลดบาลานซ์เดียวกัน
อ่านเพิ่มเติม: Openshift Vs Kubernetes: ความแตกต่างระหว่าง Openshift & Kubernetes
Kubernetes Networking
ส่วนใหญ่ CNI (Container Network Interface) ใช้สำหรับปิดบังเครือข่ายพื้นฐาน นอกจากนี้ยังสามารถใช้ผ้าดิบซึ่งเป็นตัวเลือกที่มีเส้นทางครบถ้วน ในทั้งสองตัวเลือก การสื่อสารจะทำบนเครือข่ายพ็อดทั่วทั้งคลัสเตอร์และควบคุมโดย Calico หรือ Flannel (ผู้ให้บริการ CNI) คอนเทนเนอร์สามารถสื่อสารภายในพ็อดบนโลคัลโฮสต์ได้โดยไม่มีข้อจำกัดใดๆ การย้ายจากแหล่งที่มาภายนอกไปยังบริการหรือพ็อดไปยังบริการทำได้ผ่าน Kube-proxy
การจัดเก็บแบบถาวร
ไดเร็กทอรีที่มีข้อมูลบางส่วนเรียกว่า Volumes ใน Kubernetes ไดเร็กทอรีสามารถเข้าถึงพ็อดได้ มีหน่วยความจำหลายประเภทใน Kubernetes คอนเทนเนอร์ภายในพ็อดสามารถใช้พื้นที่เก็บข้อมูลใดก็ได้ บริการคลาวด์สาธารณะ เช่น NFS, Amazon Elastic Block Store, Iscsi, CephFS เป็นต้น ใช้สำหรับติดตั้งไฟล์และบล็อกที่เก็บข้อมูลไปยังพ็อด PV (PersistentVolumes) เป็นอ็อบเจ็กต์ระดับคลัสเตอร์ที่เชื่อมโยงกับทรัพยากรหน่วยเก็บข้อมูลที่มีอยู่
ภายในเนมสเปซ คำขอสำหรับการใช้หน่วยเก็บข้อมูลเริ่มต้นโดย PersistentVolumeClaim สถานะต่างๆ ของ PV พร้อมใช้งาน ถูกผูกมัด เผยแพร่และล้มเหลว StorageClasses เป็นชั้นนามธรรม แยกความแตกต่างของคุณภาพการจัดเก็บข้อมูลพื้นฐานและแยกคุณลักษณะต่างๆ ออก พ็อดสามารถขอพื้นที่เก็บข้อมูลใหม่แบบไดนามิกด้วยความช่วยเหลือของ StorageClasses และ PersistentVolumeClaim
แหล่งที่มา
การค้นพบและเผยแพร่บริการ
Kubernetes ขึ้นอยู่กับเวอร์ชันของคลัสเตอร์ Kubernetes ขึ้นอยู่กับ Kube-DNS หรือ CoreDNS ในการค้นหาบริการ บริการ DNS แบบรวมเหล่านี้สร้าง อัปเดต และลบระเบียน DNS ช่วยให้แอปพลิเคชันกำหนดเป้าหมายพ็อดและบริการอื่นๆ ผ่านรูปแบบการตั้งชื่อที่เรียบง่ายและสม่ำเสมอ
ตัวอย่าง ( ที่มา )
สำหรับบริการ Kubernetes ระเบียน DNS สามารถเป็น service.namespace.svc.cluster.local
บันทึก DNS พ็อดหนึ่งสามารถมีได้: 10.32.0.125.namespace.pod.cluster.local
แหล่งที่มา
เนมสเปซ
คลัสเตอร์ทางกายภาพที่มีคลัสเตอร์เสมือนเรียกว่าเนมสเปซ มีสภาพแวดล้อมเสมือนแยกต่างหากสำหรับผู้ใช้หลายคนพร้อมกับสิทธิ์การเข้าถึงวัตถุ Kubernetes ตามลำดับ
ป้าย
ป้ายกำกับใช้เพื่อแยกความแตกต่างของทรัพยากรที่มีอยู่ในเนมสเปซเดียว แอตทริบิวต์ถูกกำหนดโดยคู่คีย์หรือค่า ป้ายกำกับใช้สำหรับการแมปโครงสร้างองค์กรเหนือออบเจ็กต์ Kubernetes สามารถอธิบายสภาพแวดล้อม สถานะการเปิดตัว ระดับแอป หรือการระบุตัวตนของลูกค้า มันป้องกันการเชื่อมโยงอย่างหนักของวัตถุ
คำอธิบายประกอบ
คำอธิบายประกอบใช้สำหรับเพิ่มสัมภาระที่ไม่ระบุชื่อหรือข้อมูลเมตาไปยังออบเจ็กต์ ใช้เป็นเครื่องมือกำหนดค่าแบบเปิดเผย

ต้องอ่าน: Kubernetes Vs. นักเทียบท่า: ความแตกต่างหลักที่คุณควรทราบ
รับ ปริญญาวิศวกรรมซอฟต์แวร์ จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว
บทสรุป
เทคโนโลยีของ Kubernetes กำลังพัฒนาอย่างรวดเร็ว และเป็นโซลูชันที่คุ้มค่าสำหรับอนาคต มีความเสถียรสูงในการใช้งาน
แนวคิดพื้นฐานทั้งหมดของ สถาปัตยกรรม Kubernetes และ ส่วนประกอบ Kubernetes ได้อธิบายไว้ในบทความนี้
หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับ Kubernetes, ข้อมูลขนาดใหญ่, ลองดู โปรแกรม Executive PG ของ upGrad & IIIT-B ในการพัฒนาซอฟต์แวร์แบบครบวงจร ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 500 ชั่วโมง โครงการมากกว่า 9 โครงการ และ การมอบหมายงาน สถานะศิษย์เก่า IIIT-B โครงการหลักที่นำไปปฏิบัติจริง และความช่วยเหลือด้านงานกับบริษัทชั้นนำ
