ทำความเข้าใจกับสถาปัตยกรรม Kubernetes

มาเรียนรู้รายละเอียดสถาปัตยกรรมของ Kubernetes กันดีกว่า.


ฉันคิดว่าคุณมีความเข้าใจพื้นฐานของ Kubernetes หากยังไม่ได้ตรวจสอบบทความแนะนำและการติดตั้งต่อไปนี้.

Kubernetes คำแนะนำสำหรับผู้เริ่มต้น

วิธีการติดตั้ง Kubernetes บน Ubuntu 18?

Kubernetes ติดตามสถาปัตยกรรม master-slave สถาปัตยกรรม Kubernetes มีโหนดหลักและโหนดผู้ปฏิบัติงาน มีสี่องค์ประกอบของ โหนดหลัก.

  • เซิร์ฟเวอร์ Kube API
  • ตัวควบคุม
  • จัดตารางเวลา
  • etcd

และ โหนดผู้ปฏิบัติงาน มีสามองค์ประกอบ.

  • kubelet
  • Kube-พร็อกซี่
  • คอนเทนเนอร์รันไทม์

นี่คือลักษณะของสถาปัตยกรรม Kubernetes:

สถาปัตยกรรม kubernetes

ให้ฉันบอกคุณเกี่ยวกับส่วนประกอบของโหนดหลักและโหนดผู้ปฏิบัติงานโดยละเอียด.

มาสเตอร์โหนด

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

นอกจากนี้เพื่อจัดการสถานะคลัสเตอร์ Kubernetes ใช้ etcd โหนดต้นแบบทั้งหมดเชื่อมต่อกับ etcd ซึ่งเป็นที่เก็บคีย์ – ค่าแบบกระจาย.

kubernetes โหนดหลัก

ฉันจะอธิบายให้คุณฟังเกี่ยวกับองค์ประกอบเหล่านี้ทีละตัว.

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

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

จัดตารางเวลา

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

ผู้จัดการฝ่ายควบคุม

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

ในลูปควบคุมหากสถานะที่ต้องการไม่ตรงกับสถานะปัจจุบันของวัตถุดังนั้นขั้นตอนการแก้ไขจะถูกนำมาใช้โดยลูปควบคุมเพื่อให้สถานะปัจจุบันเหมือนกันกับสถานะที่ต้องการ ดังนั้นตัวจัดการคอนโทรลเลอร์ทำให้แน่ใจว่าสถานะปัจจุบันของคุณเหมือนกันกับสถานะที่ต้องการ.

etcd

etcd เป็นที่เก็บคีย์ – ค่าแบบกระจายที่ใช้เพื่อเก็บสถานะคลัสเตอร์ ดังนั้นไม่ว่าจะเป็นส่วนหนึ่งของต้นแบบ Kubernetes หรือคุณสามารถกำหนดค่าภายนอกได้เช่นกัน etcd ถูกเขียนใน goLang และเป็นไปตาม ฉันทามติแพ ขั้นตอนวิธี.

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

สามารถมีเจ้านายได้เพียงคนเดียวและอาจารย์คนอื่น ๆ ทั้งหมดต้องติดตามนายนั้น นอกจากการจัดเก็บสถานะคลัสเตอร์แล้ว etcd ยังใช้เพื่อเก็บรายละเอียดการกำหนดค่าเช่นซับเน็ตและแม็พการกำหนดค่า.

โหนดคนงาน

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

และในการเข้าถึงแอปพลิเคชันจากโลกภายนอกคุณต้องเชื่อมต่อกับโหนดผู้ปฏิบัติงานและไม่ใช่โหนดหลัก.

kubernetes โหนดผู้ปฏิบัติงาน

มาสำรวจส่วนประกอบโหนดผู้ปฏิบัติงาน.

คอนเทนเนอร์ไทม์

คอนเทนเนอร์รันไทม์โดยทั่วไปจะใช้เพื่อเรียกใช้และจัดการวงจรชีวิตอย่างต่อเนื่องบนโหนดของผู้ปฏิบัติงาน ตัวอย่างของคอนเทนเนอร์รันไทม์ที่ฉันสามารถให้คุณได้คือคอนเทนเนอร์ rkt, lxc และอื่น ๆ มักสังเกตว่านักเทียบท่าเรียกว่า container runtime แต่แม่นยำบอกให้ฉันบอกคุณว่า docker เป็นแพลตฟอร์มที่ใช้คอนเทนเนอร์ เป็นคอนเทนเนอร์รันไทม์.

Kubelet

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

kubelet เชื่อมต่อกับคอนเทนเนอร์ runtime โดยใช้เฟรมเวิร์ก gRPC kubelet เชื่อมต่อกับ container runtime interface (CRI) เพื่อดำเนินการเกี่ยวกับคอนเทนเนอร์และรูปภาพ บริการรูปภาพรับผิดชอบการดำเนินการที่เกี่ยวข้องกับรูปภาพทั้งหมดในขณะที่บริการ runtime รับผิดชอบงานทั้งหมดของ pod และการดำเนินการที่เกี่ยวข้องกับคอนเทนเนอร์ บริการทั้งสองนี้มีการดำเนินการที่แตกต่างกันสองแบบเพื่อดำเนินการ.

ฉันจะบอกคุณบางสิ่งบางอย่างที่น่าสนใจ runtimes คอนเทนเนอร์เคยเป็นรหัสยากใน Kubernetes แต่ด้วยการพัฒนาของ CRI ตอนนี้ Kubernetes สามารถใช้ runtimes คอนเทนเนอร์ที่แตกต่างกันโดยไม่จำเป็นต้องคอมไพล์ใหม่ ดังนั้นคอนเทนเนอร์รันไทม์ใด ๆ ที่ใช้ CRI สามารถใช้โดย Kubernetes เพื่อจัดการพ็อดคอนเทนเนอร์และอิมเมจคอนเทนเนอร์ คอนเทนเนอร์ Docker shim และ CRI เป็นสองตัวอย่างของ CRI shim ด้วย docker shim คอนเทนเนอร์จะถูกสร้างขึ้นโดยใช้ docker ที่ติดตั้งบนโหนดของผู้ปฏิบัติงานจากนั้นนักเทียบท่าภายในจะใช้คอนเทนเนอร์เพื่อสร้างและจัดการคอนเทนเนอร์

Kube-พร็อกซี่

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

ข้อสรุป

ฉันหวังว่าสิ่งนี้จะช่วยให้คุณเข้าใจสถาปัตยกรรมของ Kubernetes ในทางที่ดีขึ้น ทักษะของ Kubernetes นั้นเป็นที่ต้องการเสมอและหากคุณกำลังมองหาที่จะเรียนรู้เพื่อสร้างอาชีพให้ลองดูสิ่งนี้ แน่นอน Udemy.

Tags:

  • นักเทียบท่า

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map