6 แนวทางเพื่อจัดการค่าใช้จ่ายของ Kubernetes ให้อยู่หมัด

Kubenetes ได้กลายเป็นพื้นฐานของแอปพลิเคชันสมัยใหม่ไปแล้ว แต่ในการปฏิบัติจริงนั้นค่าใช้จ่ายในการดูแลและบริหารจัดการเป็นเรื่องที่ประมาทไม่ได้เลย ซึ่งอาจก่อให้เกิดต้นทุนกับองค์กรอย่างมีนัยสำคัญ โดยผู้ใช้จากต้องทราบว่า Kubernetes เกี่ยวพันกับปัจจัยหลายตัวทางด้านทรัพยากรเช่น Compute, Storage, Networking และอื่นๆ รวมถึงต้นทุนในการปฏิบัติการ ด้วยเหตุนี้เององค์กรจึงต้องมีหลักปฏิบัติที่ดี โดยมี 6 ข้อที่ท่านสามารถนำไปปฎิบัติได้ดังนี้

ก่อนที่จะเริ่มกับแนวทางปฏิบัติ 6 ข้อ ผู้อ่านต้องเข้าใจถึงความยุ่งยากที่เกิดขึ้นกับ Kubernetes ที่แอปตัวหนึ่งอาจประกอบด้วยหลาย Pod, การทำ Ingress, Persistent Volume รวมถึงเนื้อหาเบื้องหลังอย่าง namespace และการที่กระจายตัวไปได้หลาย Cloud, Data Center และ Cluster อย่างไรก็ดีแม้องค์กรอาจมีเครื่องมือจัดการต้นทุน แต่คำถามคือเครื่องมือเหล่านี้ได้ถูกออกแบบมาให้มองไปถึงตัวแปรที่กล่าวมาของ Kubernetes หรือไม่ ด้วยเหตุนี้เองจึงนำไปสู่แนวทางปฎิบัติ 6 ข้อดังต่อไปนี้

1.) เลือก Cloud Instance ให้เหมาะสม

การรู้จักความต้องการของแอปพลิเคชันจะช่วยลดค่าใช้จ่ายขององค์กรได้อย่างมหาศาล เพราะสามารถเลือกเปิดใช้ทรัพยากรได้อย่างเหมาะสมเช่น

  • อัตราการใช้ CPU หรือ Memory ขั้นต่ำและความน่าจะเป็นที่เกิดขึ้นสูงสุด 
  • เลือก instance บน Public Cloud ได้ถูกต้องเนื่องจากบริการเหล่านี้มักถูกออกแบบมาให้ทำงานได้หลากหลาย เช่น ในบางงานอาจเหมาะกับ Spot Instance หรืองานที่เริ่มต้นขั้นต่ำก่อนแล้วค่อยวางแผน Burst เพิ่มเติมยามจำเป็น
  • มีเครื่องมือในท้องตลาดที่สามารถช่วยทำการเพิ่ม-ลด ขนาด Pod ได้อย่างอัตโนมัติ

2.) ใช้ประโยชน์จากความสามารถ Multi-tenancy 

Kubernetes Cluster สามารถถูกใช้งานได้ 2 รูปแบบคือแชร์(Shared) หรือจองใช้งาน(Dedicated) ซึ่งหากท่านเข้าใจความต้องการของแอปอย่างถ่องแท้ก็อาจลดค่าใช้จ่ายด้วยโมเดลการใช้งานร่วมกันผ่านกลไกของ namespace ในบางกรณีท่านต้องจองใช้งานเพียงผู้เดียวเช่น แอปสำคัญที่ต้องการ low-latency หรือมีความต้องการพิเศษอย่าง Plug-in และ GPU Worker อย่างไรก็ตามความสามารถในการแบ่งปันใช้งาน Cluster ทำให้ท่านสามารถลดค่าใช้จ่ายได้แต่ก็ต้องมีการวางแผนเรื่อง Governance และ Security ด้วย

  • กำหนดโควต้าให้แอปในระดับ namespace
  • ทำ Network Policy เพื่อแบ่งแยกแต่ละ namespace
  • ใช้เครื่องมือช่วยสำหรับ Security Policy และ Governance ได้เช่น Open Policy Agent
  • มีกลไกการป้องกันการเข้าถึงผ่าน SSO หรือ RBAC
  • มี Cluster สำหรับการบริหารจัดการที่ใช้ร่วมกัน

3.) ทำให้ผู้มีส่วนร่วมเห็นภาพต้นทุน

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

4.) สร้าง Policy สำหรับปรับแต่งการใช้งาน

มีงานหลายรูปแบบที่สามารถถูกปรับลดหรือตัดออกไปได้ เช่น ทรัพยากรที่ไม่ได้ใช้งานสามารถปิดได้ หรือระบบทดสอบของลูกค้าที่สามารถตั้งปิดได้ช่วงวันหยุด เช่น บริการของ AWS EKS มีฟังก์ชันที่ช่วยปิด Worker Node ลงได้ขณะไม่ได้ใช้งาน โดย Policy เหล่านี้มีวิธีการที่ท่านสามารถสร้างความเป็นอัตโนมัติขึ้นได้ นอกจากนี้การทำ Tag จะช่วยให้องค์กรทราบได้ว่าทรัพยากรใดมีอายุการใช้งานถึงเมื่อไหร่ หรือยกเว้นการใช้งาน Cloud Region และ instance บางประเภทออกไปได้ตามความเหมาะสม

5.) อย่ามองข้ามต้นทุนแฝง

มีต้นทุนหลายเรื่องในการดูแลจัดการ Kubernetes ที่คนมักมองข้าม ยิ่งหากท่านเป็นผู้จัดการ Kubernetes ขนาดใหญ่สิ่งเหล่านี้ต้องวางแผนให้ดี โดยมีค่าใช้จ่ายเช่น

  • การจัดตั้ง Kubernetes สำหรับการทำงานจริง(Production) และวัตถุประสงค์อื่นนอกเหนือจากการทำงาน (non-production)
  • การเพิ่ม add-ons ให้ Cluster
  • การทำ Security Policy ระดับ Cluster
  • การจัดตั้งระบบ Logging และ Monitoring
  • การทำ RBAC ให้ผู้ใช้งาน
  • การ Deploy แอปพลิเคชัน
  • การอัปเกรตเวอร์ชันใหม่ให้ Kubernetes และ add-ons
  • การสืบหาต้นตนปัญหาเพื่อเข้าไปแก้ไข

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

6.) ใช้เครื่องมือจัดการค่าใช้จ่ายที่ออกแบบมาเพื่อ Kubernetes อย่างแท้จริง

เครื่องมือที่ถูกออกแบบมาสำหรับ Kubernetes มักมีฟังก์ชันเหล่านี้

  • แสดงภาพรวมต้นทุนของ Kubernetes ได้หลากมุมมองทั้ง Cluster, Application, Environment, ทีม และ Business Unit
  • เห็นการทำงานลึกถึงระดับ Namespace, Pod และอื่นๆ
  • แปลงผลเป็นค่าใช้จ่ายเชิงตัวเลยที่สะท้อนการทำงานของทุกฝ่ายได้
  • มีการจัดเก็บข้อมูลการใช้งานในตัวแปรต่างๆที่ทำนายการใช้จ่ายในอนาคต
  • มีฟังก์ชัน RBAC ให้แต่ละทีมเพื่อเข้าดูค่าใช้จ่ายที่เกี่ยวข้องของตนเองได้

ที่มา : https://www.infoworld.com/article/3700775/6-best-practices-to-keep-kubernetes-costs-under-control.html

About nattakon

จบการศึกษา ปริญญาตรีและโท สาขาวิศวกรรมคอมพิวเตอร์ KMITL เคยทำงานด้าน Engineer/Presale ดูแลผลิตภัณฑ์ด้าน Network Security และ Public Cloud ในประเทศ ปัจจุบันเป็นนักเขียน Full-time ที่ TechTalkThai

Check Also

Microsoft แพตช์ช่องโหว่ Zero-day 4 รายการในการอัปเดตประจำเดือนพฤศจิกายน 2024

Microsoft ออกแพตช์ความปลอดภัยประจำเดือนพฤศจิกายน 2024 แก้ไขช่องโหว่ 91 รายการ รวมถึงช่องโหว่ Zero-day 4 รายการ โดยมี 2 รายการที่ถูกนำไปใช้โจมตีแล้ว

Red Hat เตรียมเข้าซื้อกิจการ Neural Magic เสริมทัพด้าน AI Optimization

Red Hat ประกาศเข้าซื้อกิจการ Neural Magic สตาร์ทอัพด้าน AI ที่พัฒนาเทคโนโลยีการปรับแต่งโมเดล AI ให้ทำงานได้อย่างมีประสิทธิภาพบนฮาร์ดแวร์ทั่วไป