Kubernetes คือ ตอนที่ 9 : แนวทางปฏิบัติที่ดีที่สุดของ Kubernetes

  1. คำขอทรัพยากร (Resource Requests) และขีดจำกัด (Limits)
  2. จัดการ Kubernetes ด้วย Helm
  3. การใช้ CI/CD กับ Kubernetes

Kubernetes หรือที่มักเรียกกันว่า K8 เป็นแพลตฟอร์มโอเพ่นซอร์สที่ออกแบบมาเพื่อทำให้การปรับใช้ การปรับขนาด และการดำเนินการคอนเทนเนอร์ของแอปพลิเคชันเป็นแบบอัตโนมัติ โดยมีเฟรมเวิร์กเพื่อรันระบบแบบกระจายอย่างยืดหยุ่น ปรับขนาดและแก้ไขแอปพลิเคชันได้ตามต้องการในการทำแอพ บทความนี้เจาะลึกแนวทางปฏิบัติที่ดีที่สุดสำหรับการทำแอพและจัดการแอปพลิเคชันโดยใช้ Kubernetes โดยพิจารณาจากแง่มุมต่างๆ เช่น คำขอทรัพยากรและขีดจำกัด การจัดการ Kubernetes ด้วย Helm และการนำการผสานรวมอย่างต่อเนื่องและการปรับใช้อย่างต่อเนื่อง (CI/CD) กับ Kubernetes ในการทำแอพ

1. คำขอทรัพยากร (Resource Requests) และขีดจำกัด (Limits)

Kubernetes ช่วยให้คุณระบุปริมาณ CPU และหน่วยความจำ (RAM) ที่แต่ละคอนเทนเนอร์ต้องการ ซึ่งเป็นสิ่งสำคัญสำหรับตัวกำหนดตารางเวลา Kubernetes เพื่อทำการตัดสินใจอย่างชาญฉลาดมากขึ้นเกี่ยวกับตำแหน่งที่จะวางพ็อดของคุณ

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

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

2. จัดการ Kubernetes ด้วย Helm

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

Helm ใช้รูปแบบบรรจุภัณฑ์ที่เรียกว่าแผนภูมิ แผนภูมิคือชุดของไฟล์ที่อธิบายชุดทรัพยากร Kubernetes ที่เกี่ยวข้อง แผนภูมิเดียวอาจอธิบายไมโครเซอร์วิสเดียว หรืออาจอธิบายถึงแอปพลิเคชันหลายชั้นทั้งหมด

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

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

3. การใช้ CI/CD กับ Kubernetes

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

เมื่อตั้งค่าไปป์ไลน์ CI/CD สำหรับแอปพลิเคชันที่ใช้ Kubernetes กระบวนการโดยทั่วไปจะประกอบด้วยขั้นตอนเหล่านี้:

  1. Code : นักพัฒนาเขียนและส่งรหัสไปยังระบบควบคุมเวอร์ชันเช่น Git โค้ดควรประกอบด้วยโค้ดแอปพลิเคชัน Dockerfile เพื่อสร้างอิมเมจคอนเทนเนอร์ และไฟล์รายการ Kubernetes สำหรับการปรับใช้
  2. Build : เซิร์ฟเวอร์ CI (เช่น Jenkins, GitLab CI หรือ GitHub Actions) จะดึงโค้ดล่าสุดและสร้างอิมเมจ Docker
  3. Test : การทดสอบอัตโนมัติดำเนินการกับอิมเมจ Docker สิ่งเหล่านี้อาจเป็นการทดสอบหน่วย การทดสอบการรวม หรือการทดสอบอื่นๆ ตามความจำเป็น หากผ่านการทดสอบ รูปภาพจะถูกแท็กและพุชไปยังรีจิสทรีของ Docker
  4. Deployใช้ : เซิร์ฟเวอร์ CI อัปเดตรายการ Kubernetes เพื่อใช้อิมเมจใหม่และนำรายการที่อัปเดตไปใช้กับคลัสเตอร์ Kubernetes ขั้นตอนนี้สามารถทำได้ในสภาพแวดล้อมต่างๆ เช่น การจัดเตรียม ก่อนการผลิต หรือการผลิต โดยแต่ละเหตุการณ์จะถูกทริกเกอร์โดยเหตุการณ์ต่างๆ

เครื่องมือต่างๆ เช่น Jenkins, CircleCI, Travis CI, GitLab และ Spinnaker มีการสนับสนุนในตัวสำหรับ Kubernetes ทำให้รวม Kubernetes เข้ากับไปป์ไลน์ CI/CD ที่มีอยู่ของคุณได้ง่ายขึ้น

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

การนำ CI/CD ไปใช้กับ Kubernetes เป็นแนวทางปฏิบัติที่ยอดเยี่ยมสำหรับการทำแอพ เนื่องจากจะช่วยให้คุณตรวจพบปัญหาในช่วงต้นของวงจรการพัฒนา ตรวจสอบคุณภาพของโค้ด และนำเสนอคุณลักษณะต่างๆ แก่ผู้ใช้ได้อย่างรวดเร็ว


แนวปฏิบัติในการปรับใช้และทำแอพบน Kubernetes เกี่ยวข้องกับแง่มุมต่างๆ เพื่อให้แน่ใจว่าแอปพลิเคชันของคุณทำงานได้อย่างมีประสิทธิภาพสูงสุด สิ่งสำคัญคือต้องตั้งค่าคำขอทรัพยากรและขีดจำกัดที่เหมาะสม การใช้ Helm เพื่อจัดการแอปพลิเคชันของคุณช่วยเพิ่มความคล่องตัวในการปรับใช้และจัดการความซับซ้อน การใช้แนวทางปฏิบัติ CI/CD สำหรับการทำแอพ Kubernetes จะช่วยเพิ่มความเร็วและความน่าเชื่อถือของการปรับใช้ของคุณ

เมื่อปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดเหล่านี้ คุณจะสามารถควบคุมพลังของ Kubernetes เพื่อพัฒนา ปรับใช้ และทำแอพที่ยืดหยุ่นและปรับขนาดได้อย่างมีประสิทธิภาพ


Kubernetes คืออะไร

Kubernetes คือ ตอนที่ 8 : การบันทึก (Logging) และการตรวจสอบ (Monitoring)