Kubernetes - สถาปัตยกรรม

ในบทนี้เราจะพูดถึงสถาปัตยกรรมพื้นฐานของ Kubernetes

Kubernetes - สถาปัตยกรรมคลัสเตอร์

ดังที่เห็นในแผนภาพต่อไปนี้ Kubernetes เป็นไปตามสถาปัตยกรรมไคลเอนต์เซิร์ฟเวอร์ ในที่นี้เราได้ติดตั้งต้นแบบไว้ในเครื่องเดียวและโหนดบนเครื่อง Linux ที่แยกจากกัน

ส่วนประกอบหลักของมาสเตอร์และโหนดถูกกำหนดไว้ในส่วนต่อไปนี้

Kubernetes - ส่วนประกอบเครื่องจักรหลัก

ต่อไปนี้เป็นส่วนประกอบของ Kubernetes Master Machine

ฯลฯ

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

เซิร์ฟเวอร์ API

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

ผู้จัดการตัวควบคุม

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

เครื่องมือจัดกำหนดการ

นี่คือหนึ่งในองค์ประกอบหลักของ Kubernetes master เป็นบริการหลักที่รับผิดชอบในการกระจายภาระงาน มีหน้าที่ติดตามการใช้ประโยชน์จากภาระการทำงานบนโหนดคลัสเตอร์จากนั้นวางภาระงานบนทรัพยากรที่พร้อมใช้งานและยอมรับปริมาณงาน กล่าวอีกนัยหนึ่งนี่คือกลไกที่รับผิดชอบในการจัดสรรพ็อดให้กับโหนดที่มีอยู่ ตัวกำหนดตารางเวลารับผิดชอบการใช้งานเวิร์กโหลดและจัดสรรพ็อดให้กับโหนดใหม่

Kubernetes - ส่วนประกอบโหนด

ต่อไปนี้เป็นส่วนประกอบหลักของเซิร์ฟเวอร์โหนดที่จำเป็นในการสื่อสารกับ Kubernetes master

นักเทียบท่า

ข้อกำหนดแรกของแต่ละโหนดคือ Docker ซึ่งช่วยในการเรียกใช้คอนเทนเนอร์แอ็พพลิเคชันที่ห่อหุ้มในสภาพแวดล้อมการทำงานที่ค่อนข้างแยก แต่มีน้ำหนักเบา

บริการ Kubelet

นี่เป็นบริการขนาดเล็กในแต่ละโหนดที่รับผิดชอบในการถ่ายทอดข้อมูลไปยังและจากบริการเครื่องบินควบคุม มันโต้ตอบกับetcdจัดเก็บเพื่ออ่านรายละเอียดการกำหนดค่าและเขียนค่า สิ่งนี้สื่อสารกับคอมโพเนนต์หลักเพื่อรับคำสั่งและทำงาน kubeletจากนั้นจะรับหน้าที่รับผิดชอบในการรักษาสถานะการทำงานและเซิร์ฟเวอร์โหนด จัดการกฎเครือข่ายการส่งต่อพอร์ต ฯลฯ

บริการ Kubernetes Proxy

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

Kubernetes - โครงสร้างหลักและโหนด

ภาพประกอบต่อไปนี้แสดงโครงสร้างของ Kubernetes Master และ Node