บทช่วยสอน 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 Archiแผนภาพเทคเจอร์
Kubernetes Archiแผนภาพเทคเจอร์

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

มาสเตอร์โหนดเป็นส่วนประกอบแรกและสำคัญที่สุดซึ่งรับผิดชอบการจัดการคลัสเตอร์ 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 คือแดชบอร์ดไม่มีประโยชน์และมีประสิทธิภาพมากนัก