optimize kubernetes resource request and limit

0
76

halo sobat sekolahlinux, pada artikel kali ini saya coba bakal share beberapa tools yang bermanfaat untuk kita bisa mendapatkan konfigurasi yang pas untuk resource request dan limit cpu juga ram pada kubernetes

sebelum memulai menjabarkan 2 tools yang bisa kita gunakan ada baiknya kalian perlu mengimplementasikan beberapa hal dibawah ini

  • pastikan kalian sudah mengimplementasikan resource request baik untuk cpu dan juga memory, karena resource request ini nantinya yang akan menjadi treshold oleh tools yang akan kita gunakan untuk dapat memberikan recomendation resource pada service kita yang berjalan di k8s, untuk implementasi nya kamu bisa baca pada guide dibawah ini
  • jangan implementasi kubernetes HPA selama rentang diwaktu dimana kamu dalam masa mencari metric yang akurat untuk mencari tau berapa banyak usage cpu dan ram pada service kamu, ini adalah point yang penting, namun sadar atau tidak implementasi hpa akan membuat kalian mendapatkan data yang tidak akurat dan juga tidak valid, sebagai gantinya tingkatkan value dari resource request untuk mencegah terjadi kurangnya resource, alih2 meningkatkan secara horizontal lebih baik meningkatkan resource secara vertical dengan menaikan request pada cpu dan ram
  • karena kita tidak menggunakan HPA, maka set replica pods sesuai dengan jumlah minimum replica yang kamu inginkan berjalan pada saat nanti kamu menggunakan HPA, dalam case ini saya set replica di 2, tujuannya tentu agar kita bisa mendapat angka yang sesuai dengan kebutuhan kita

jika sudah maka berikut ini tools yang bisa kita gunakan untuk mendapatkan config recomendation resource request dan limit untuk service kita yang berjalan di k8s

kubecost

untuk guidenya kamu bisa lihat disini https://www.kubecost.com/install.html#show-instructions

robusta/krr

berbeda dengan kube-cost yang mengumpulkan data dahulu, maka robusta/krr bisa langsung memulai kalkulasi menggunakan data monitoring yang sudah ada di prometheus, maka dari itu saya sarankan sebelum kalian mengguankan robusta/krr kalian sudah memonitoring k8s kalian dengan mengguankan prometheus dan agent nya

dengan 2 tools diatas kita akan diberikan hasil rekomendasi resource request yang bisa digunakan, namun perlu di perhatikan hasil result dengan tools tersebut adalah step awal untuk evaluasi selanjutnya, karena bisa jadi resource diatas memang akurat dalam kondisi tidak menggunakan HPA.

lalu bagaimana jika kita menggunakan HPA atau KEDA, tentu ada treshold yang harus di penuhi untuk autoscale pods secara horizontal, misal dalam case saya treshold usage adalah 50% dari resource request, maka saya meningkatkan result dari 2 tools diatas sampai 2-3x resource request ram yang di rekomendasikan, disini saya biasanya juga set resource request dan limit ram di angka yang sama, untuk kemudahan dalam monitoring

case diatas adalah untuk ram, bagaimana dengan cpu? biasanya jika cpu saya tidak pernah set resource limit, hanya resource request saja yang mana berarti saya tidak menerapkan batasan untuk cpu usage, karena karakteristik pemakaian cpu service yang dikembangkan oleh team saya saat ini lebih condong ke ram, sebenernya saat ini sangat lebih banyak service menggunakan ram dibanding cpu, jadi saya hanya set resource request saja untuk mendapatkan metric cpu usage yang bisa digunakan pada hpa juga, jaga-jaga jika ternyata ada case dimana function tertentu membutuhkan cpu usage, dan juga untuk keperluan monitoring