บทช่วยสอน Kubernetes สำหรับผู้เริ่มต้น

⚡ สรุปอย่างชาญฉลาด

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

  • ☸️ คำจำกัดความของ Kubernetes: ระบบจัดการคอนเทนเนอร์แบบโอเพนซอร์สจาก Google สำหรับแอปพลิเคชันแบบคลัสเตอร์
  • 📦 เหตุผลที่ต้องใช้ภาชนะบรรจุ: คอนเทนเนอร์จะบรรจุทุกสิ่งที่แอปต้องการ ทำให้สามารถอัปเดตและบำรุงรักษาได้โดยไม่ต้องหยุดการทำงานของแอป
  • ⚙️ คุณสมบัติเด่น: การกำหนดตารางเวลาอัตโนมัติ การแก้ไขตัวเอง การเปิดตัว/ยกเลิกการเปิดตัว การขยายขนาดในแนวนอน และการกระจายภาระงาน
  • 🧱 ส่วนประกอบหลัก: Clusterโหนดหลัก (เซิร์ฟเวอร์ API, ตัวกำหนดตารางเวลา, etcd), โหนดทำงาน และพอด
  • 🆚 เทียบกับ Docker Swarm: Kubernetes มีระบบปรับขนาดอัตโนมัติและระบบตรวจสอบในตัว ในขณะที่ Swarm นั้นติดตั้งง่ายกว่าและเร็วกว่า
  • ข้อดีและข้อเสีย: ใช้งานได้บนระบบคลาวด์ใดก็ได้ที่มีชุมชนขนาดใหญ่ แต่มีแดชบอร์ดและการตั้งค่าที่ค่อนข้างซับซ้อน

บทช่วยสอน Kubernetes สำหรับผู้เริ่มต้น

ก่อนที่เราจะเริ่มบทช่วยสอน Kubernetes นี้ มาเรียนรู้กันก่อน:

Kubernetes คืออะไร

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

ทำไมคุณถึงต้องการคอนเทนเนอร์?

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

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

Kubernetes ทำหน้าที่อะไร?

Kubernetes คือเคอร์เนลของ Linux ที่ใช้สำหรับระบบแบบกระจาย ช่วยให้คุณสามารถควบคุมได้อย่างสมบูรณ์แบบtracโดยจะผสานรวมเข้ากับฮาร์ดแวร์พื้นฐานของโหนด (เซิร์ฟเวอร์) และนำเสนออินเทอร์เฟซที่สม่ำเสมอสำหรับแอปพลิเคชันที่ใช้ทรัพยากรส่วนกลางร่วมกัน

ทำไมต้องใช้ Kubernetes?

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

คุณสมบัติของ Kubernetes

นี่คือคุณสมบัติที่สำคัญของ Kubernetes:

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

ข้อมูลพื้นฐานเกี่ยวกับ Kubernetes

ในบทช่วยสอน Kubernetes นี้ เราจะเรียนรู้พื้นฐานที่สำคัญบางประการของ Kubernetes:

Cluster

เป็นชุดของโฮสต์ (เซิร์ฟเวอร์) ที่ช่วยให้คุณรวบรวมทรัพยากรที่มีอยู่ ซึ่งรวมถึง RAM, CPU, RAM, ดิสก์ และอุปกรณ์ต่างๆ ลงในพูลที่ใช้งานได้

เจ้านาย

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

โหนด

เป็นโฮสต์เดียวที่สามารถทำงานบนฟิสิคัลหรือ เครื่องเสมือนโหนดควรรันทั้ง kube-proxy, minikube และ kubelet ซึ่งถือเป็นส่วนหนึ่งของคลัสเตอร์

namespace

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

Kubernetes Archiเทคเจอร์

ด้านล่างนี้เป็นไดอะแกรมสถาปัตยกรรม Kubernetes โดยละเอียด:

Kubernetes Archiแผนภาพเทคเจอร์
Kubernetes Archiแผนภาพเทคเจอร์

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

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

โหนดหลักมีส่วนประกอบต่างๆ เช่น เซิร์ฟเวอร์ API, ตัวจัดการตัวควบคุม, ตัวกำหนดเวลา และ ETCD มาดูกันทั้งหมดเลย

เซิร์ฟเวอร์ API: เซิร์ฟเวอร์ API ทำหน้าที่เป็นจุดเข้าสำหรับคำสั่ง REST ทั้งหมดที่ใช้เพื่อควบคุมคลัสเตอร์

ตารางเวลา

ตัวกำหนดเวลาจัดกำหนดการงานให้กับโหนดทาส มันเก็บข้อมูลการใช้ทรัพยากรสำหรับโหนดทาสทุกอัน มีหน้าที่กระจายภาระงาน

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

ฯลฯ

ส่วนประกอบ 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 กำหนดข้อจำกัดไว้อย่างชัดเจนtracตัวอย่างเช่น ตัวกระจายโหลดและระบบจัดเก็บข้อมูล
  • การบรรจุคอนเทนเนอร์โดยใช้ kubernetes ช่วยให้ซอฟต์แวร์แพ็กเกจสามารถตอบสนองเป้าหมายเหล่านี้ได้ โดยจะเปิดใช้งานแอปพลิเคชันที่ต้องเผยแพร่และอัปเดตโดยไม่ต้องหยุดทำงาน
  • Kubernetes ช่วยให้คุณมั่นใจได้ว่าแอปพลิเคชันในคอนเทนเนอร์จะทำงานได้ทุกที่และทุกเวลาที่คุณต้องการ และช่วยคุณค้นหาทรัพยากรและเครื่องมือที่คุณต้องการใช้งาน

ข้อเสียของ Kubernetes

  • แดชบอร์ด Kubenetes ไม่มีประโยชน์เท่าที่ควร
  • Kubernetes มีความซับซ้อนเล็กน้อยและไม่จำเป็นในสภาพแวดล้อมที่การพัฒนาทั้งหมดเสร็จสิ้นภายในเครื่อง
  • การรักษาความปลอดภัยไม่ค่อยมีประสิทธิภาพ

คำถามที่พบบ่อย

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

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

ใช่แล้ว Kubernetes เป็นโอเพนซอร์สและใช้งานได้ฟรีภายใต้ใบอนุญาต Apache 2.0 อย่างไรก็ตาม การใช้งานบนบริการคลาวด์แบบจัดการ เช่น GKE, EKS หรือ AKS อาจมีค่าใช้จ่ายด้านโครงสร้างพื้นฐานและค่าบริการ

AI ช่วย Kubernetes โดยการคาดการณ์ความต้องการทรัพยากร ปรับขนาดเวิร์กโหลดอัตโนมัติ ตรวจจับความผิดปกติ และเพิ่มประสิทธิภาพการจัดตารางเวลา เครื่องมือ AIOps วิเคราะห์เมตริกและบันทึกของคลัสเตอร์เพื่อปรับปรุงความน่าเชื่อถือและลดการทำงานด้วยตนเอง

ใช่แล้ว ผู้ช่วย AI สามารถสร้างไฟล์ YAML manifest แก้ไขปัญหา Pod ที่ล้มเหลว แนะนำขนาดที่เหมาะสม และอธิบายเหตุการณ์ในคลัสเตอร์ได้ping ทีมต่างๆ สามารถใช้งาน Kubernetes ได้อย่างมีประสิทธิภาพมากขึ้น โดยใช้แรงงานคนน้อยลง

สรุปโพสต์นี้ด้วย: