OpenShift - สถาปัตยกรรม
OpenShift เป็นระบบเลเยอร์โดยแต่ละเลเยอร์จะถูกผูกไว้อย่างแน่นหนากับเลเยอร์อื่นโดยใช้คลัสเตอร์ Kubernetes และ Docker สถาปัตยกรรมของ OpenShift ได้รับการออกแบบให้สามารถรองรับและจัดการคอนเทนเนอร์ Docker ซึ่งโฮสต์อยู่ด้านบนของเลเยอร์ทั้งหมดโดยใช้ Kubernetes ซึ่งแตกต่างจาก OpenShift V2 เวอร์ชันก่อนหน้าคือ OpenShift V3 เวอร์ชันใหม่รองรับโครงสร้างพื้นฐานแบบคอนเทนเนอร์ ในรุ่นนี้ Docker ช่วยในการสร้างคอนเทนเนอร์ที่ใช้ Linux ที่มีน้ำหนักเบาและ Kubernetes รองรับงานในการจัดระเบียบและจัดการคอนเทนเนอร์ในหลาย ๆ โฮสต์
ส่วนประกอบของ OpenShift
องค์ประกอบหลักอย่างหนึ่งของสถาปัตยกรรม OpenShift คือการจัดการโครงสร้างพื้นฐานแบบคอนเทนเนอร์ใน Kubernetes Kubernetes รับผิดชอบการปรับใช้และการจัดการโครงสร้างพื้นฐาน ในคลัสเตอร์ Kubernetes เราสามารถมีโหนดหลักมากกว่าหนึ่งโหนดและหลายโหนดได้ซึ่งจะช่วยให้มั่นใจได้ว่าไม่มีจุดล้มเหลวในการตั้งค่า
Kubernetes Master Machine Components
Etcd- จัดเก็บข้อมูลการกำหนดค่าซึ่งแต่ละโหนดในคลัสเตอร์สามารถใช้ได้ เป็นที่เก็บค่าคีย์ที่มีความพร้อมใช้งานสูงซึ่งสามารถกระจายไปตามโหนดต่างๆได้ ควรเข้าถึงได้โดยเซิร์ฟเวอร์ Kubernetes API เท่านั้นเนื่องจากอาจมีข้อมูลที่ละเอียดอ่อน เป็นที่เก็บค่าคีย์แบบกระจายซึ่งทุกคนสามารถเข้าถึงได้
API Server- Kubernetes เป็นเซิร์ฟเวอร์ API ที่ให้การดำเนินการทั้งหมดในคลัสเตอร์โดยใช้ API เซิร์ฟเวอร์ API ใช้อินเทอร์เฟซซึ่งหมายความว่าเครื่องมือและไลบรารีต่างๆสามารถสื่อสารกับมันได้อย่างง่ายดาย kubeconfig เป็นแพ็คเกจพร้อมกับเครื่องมือฝั่งเซิร์ฟเวอร์ที่สามารถใช้สำหรับการสื่อสาร มันแสดง Kubernetes API”
Controller Manager- ส่วนประกอบนี้รับผิดชอบต่อตัวรวบรวมส่วนใหญ่ที่ควบคุมสถานะของคลัสเตอร์และปฏิบัติงาน ถือได้ว่าเป็น daemon ที่รันในลูปแบบไม่สิ้นสุดและมีหน้าที่รวบรวมและส่งข้อมูลไปยังเซิร์ฟเวอร์ API ทำงานเพื่อรับสถานะที่ใช้ร่วมกันของคลัสเตอร์จากนั้นทำการเปลี่ยนแปลงเพื่อนำสถานะปัจจุบันของเซิร์ฟเวอร์ไปสู่สถานะที่ต้องการ ตัวควบคุมที่สำคัญ ได้แก่ ตัวควบคุมการจำลองตัวควบคุมปลายทางตัวควบคุมเนมสเปซและตัวควบคุมบัญชีบริการ ตัวจัดการคอนโทรลเลอร์เรียกใช้คอนโทรลเลอร์ประเภทต่างๆเพื่อจัดการกับโหนดปลายทาง ฯลฯ
Scheduler- เป็นองค์ประกอบหลักของ Kubernetes master เป็นบริการหลักที่รับผิดชอบในการกระจายภาระงาน มีหน้าที่ติดตามการใช้ภาระงานบนโหนดคลัสเตอร์จากนั้นวางภาระงานที่ทรัพยากรที่มีอยู่และยอมรับปริมาณงาน กล่าวอีกนัยหนึ่งนี่คือกลไกที่รับผิดชอบในการจัดสรรพ็อดให้กับโหนดที่มีอยู่ ตัวกำหนดตารางเวลารับผิดชอบการใช้งานเวิร์กโหลดและจัดสรรพ็อดให้กับโหนดใหม่
ส่วนประกอบโหนด Kubernetes
ต่อไปนี้เป็นส่วนประกอบหลักของเซิร์ฟเวอร์โหนดซึ่งจำเป็นในการสื่อสารกับ Kubernetes ต้นแบบ
Docker - ข้อกำหนดแรกของแต่ละโหนดคือ Docker ซึ่งช่วยในการเรียกใช้คอนเทนเนอร์แอปพลิเคชันที่ห่อหุ้มในสภาพแวดล้อมการทำงานที่ค่อนข้างแยก แต่มีน้ำหนักเบา
Kubelet Service- นี่คือบริการเล็ก ๆ ในแต่ละโหนดซึ่งมีหน้าที่ในการถ่ายทอดข้อมูลไปยังและจากบริการเครื่องบินควบคุม มันโต้ตอบกับ etcd store เพื่ออ่านรายละเอียดการกำหนดค่าและค่าไรท์ สิ่งนี้สื่อสารกับคอมโพเนนต์หลักเพื่อรับคำสั่งและทำงาน จากนั้นกระบวนการ kubelet จะรับผิดชอบในการรักษาสถานะการทำงานและเซิร์ฟเวอร์โหนด จัดการกฎเครือข่ายการส่งต่อพอร์ต ฯลฯ
Kubernetes Proxy Service- นี่คือบริการพร็อกซีที่ทำงานบนแต่ละโหนดและช่วยในการทำให้บริการพร้อมใช้งานสำหรับโฮสต์ภายนอก ช่วยในการส่งต่อคำขอแก้ไขตู้คอนเทนเนอร์ Kubernetes Proxy Service สามารถดำเนินการโหลดบาลานซ์แบบดั้งเดิมได้ ตรวจสอบให้แน่ใจว่าสภาพแวดล้อมเครือข่ายสามารถคาดเดาได้และเข้าถึงได้ แต่ในขณะเดียวกันก็แยกได้เช่นกัน จัดการพ็อดบนโหนดไดรฟ์ข้อมูลความลับการสร้างการตรวจสอบความสมบูรณ์ของคอนเทนเนอร์ใหม่ ฯลฯ
Integrated OpenShift Container Registry
รีจิสทรีคอนเทนเนอร์ OpenShift เป็นหน่วยเก็บข้อมูลในตัวของ Red Hat ซึ่งใช้สำหรับจัดเก็บอิมเมจ Docker ด้วย OpenShift เวอร์ชันรวมล่าสุดมันได้มาพร้อมกับอินเทอร์เฟซผู้ใช้เพื่อดูภาพในที่จัดเก็บข้อมูลภายใน OpenShift รีจิสเตอร์เหล่านี้สามารถเก็บรูปภาพที่มีแท็กที่ระบุซึ่งจะใช้ในการสร้างคอนเทนเนอร์จากนั้นในภายหลัง
ข้อกำหนดที่ใช้บ่อย
Image- อิมเมจ Kubernetes (Docker) เป็นส่วนประกอบสำคัญของ Containerized Infrastructure ณ ตอนนี้ Kubernetes รองรับเฉพาะอิมเมจ Docker เท่านั้น คอนเทนเนอร์แต่ละอันในพ็อดจะมีอิมเมจ Docker ทำงานอยู่ข้างใน เมื่อกำหนดค่าพ็อดคุณสมบัติรูปภาพในไฟล์คอนฟิกูเรชันจะมีไวยากรณ์เดียวกับคำสั่ง Docker
Project - สามารถกำหนดเป็นเวอร์ชันที่เปลี่ยนชื่อของโดเมนซึ่งมีอยู่ใน OpenShift V2 เวอร์ชันก่อนหน้า
Container - เป็นภาพที่สร้างขึ้นหลังจากใช้งานอิมเมจบนโหนดคลัสเตอร์ Kubernetes
Node- โหนดเป็นเครื่องจักรที่ทำงานในคลัสเตอร์ Kubernetes ซึ่งเรียกอีกอย่างว่า minion for master เป็นหน่วยการทำงานซึ่งอาจเป็นอินสแตนซ์จริง VM หรือคลาวด์
Pod- พ็อดคือชุดของคอนเทนเนอร์และที่เก็บข้อมูลภายในโหนดของคลัสเตอร์ Kubernetes เป็นไปได้ที่จะสร้างพ็อดที่มีภาชนะหลายอันอยู่ข้างใน ตัวอย่างเช่นการเก็บคอนเทนเนอร์ฐานข้อมูลและคอนเทนเนอร์ของเว็บเซิร์ฟเวอร์ไว้ในพ็อด