Resource Quota
Versi Bahasa Indonesia. Baca dalam Bahasa Inggris
Ketika beberapa pengguna atau tim berbagi klaster dengan jumlah node yang tetap, ada kekhawatiran bahwa satu tim dapat menggunakan lebih dari bagian sumber daya yang adil. Resource quota adalah alat bagi administrator untuk mengatasi masalah ini.
Resource quota, yang didefinisikan oleh objek ResourceQuota, memberikan batasan yang membatasi konsumsi sumber daya agregat per namespace. Ini dapat membatasi jumlah objek yang dapat dibuat dalam satu namespace berdasarkan jenisnya, serta jumlah total sumber daya komputasi yang dapat dikonsumsi oleh sumber daya di namespace tersebut.
Compute Resource Quota
Batasan ini mengontrol berapa banyak CPU dan memory yang dapat dialokasikan ke pod dalam sebuah namespace.
Mari kita buat file resource_quota.yaml dan masukkan konfigurasi berikut.
apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-quota
namespace: limited
spec:
hard:
requests.cpu: "1"
requests.memory: "2Gi"
limits.cpu: "2"
limits.memory: "4Gi"- request.cpu: Total CPU maksimum yang diminta di semua pod dalam namespace ini tidak boleh melebihi
1core. - request.memory: Total memori maksimum yang diminta di semua pod dalam namespace ini tidak boleh melebihi
2GB. - limits.cpu: Total CPU maksimum yang digunakan oleh semua pod dalam namespace ini tidak boleh melebihi
2core. - limits.memory: Total memori maksimum yang digunakan oleh semua pod dalam namespace ini tidak boleh melebihi
4GB.
Menerapkan dan Memvalidasi
Mari kita terapkan file konfigurasi menggunakan perintah kubectl apply.
β kubectl apply -f resource_quota.yaml
resourcequota/compute-quota createdKita dapat memvalidasinya menggunakan kubectl describe quota di namespace tertentu seperti ini.
β kubectl -n limited describe quota
Name: compute-quota
Namespace: limited
Resource Used Hard
-------- ---- ----
limits.cpu 0 2
limits.memory 0 4Gi
requests.cpu 0 1
requests.memory 0 2GiStorage Resource Quota
Kuota ini membatasi berapa banyak penyimpanan (Persistent Volumes) yang dapat dibuat dalam sebuah namespace.
Tambahkan beberapa baris ke file konfigurasi sebelumnya di bagian spec.hard untuk menentukan batas penyimpanan.
requests.storage: "64Gi"
persistentvolumeclaims: "10"- requests.storage: Total penyimpanan yang diminta oleh PVC dalam namespace ini tidak boleh melebihi
64GB. - persistentvolumeclaims: Jumlah total PVC dalam namespace ini tidak boleh melebihi
10.
Menerapkan dan Memvalidasi
Mari kita terapkan file konfigurasi dan validasi.
β kubectl apply -f resource_quota.yaml
resourcequota/compute-quota configuredβ kubectl -n limited describe quota
Name: compute-quota
Namespace: limited
Resource Used Hard
-------- ---- ----
limits.cpu 0 2
limits.memory 0 4Gi
persistentvolumeclaims 0 10
requests.cpu 0 1
requests.memory 0 2Gi
requests.storage 0 64GiObject Count Quota
Kuota ini membatasi jumlah objek (Pods, Services, ConfigMaps, dll.) yang dapat dimiliki sebuah namespace.
Tambahkan beberapa baris ke file konfigurasi sebelumnya di bagian spec.hard untuk menentukan batas pod, service, secret, dan configmap.
pods: "5"
services: "2"
secrets: "2"
configmaps: "2"- pods: Jumlah total Pod dalam status non-terminal di namespace ini tidak boleh melebihi
5. Sebuah pod berada dalam status terminal jika.status.phasedi (Failed, Succeeded) adalahtrue. - services: Jumlah total service dalam namespace ini tidak boleh melebihi
2. - secrets: Jumlah total secret dalam namespace ini tidak boleh melebihi
2. - configmaps: Jumlah total configmap dalam namespace ini tidak boleh melebihi
2.
Menerapkan dan Memvalidasi
Sekali lagi, mari kita terapkan konfigurasi dan validasi.
β kubectl apply -f resource_quota.yamlβ kubectl -n limited describe quota
Name: compute-quota
Namespace: limited
Resource Used Hard
-------- ---- ----
configmaps 1 2
limits.cpu 0 2
limits.memory 0 4Gi
persistentvolumeclaims 0 10
pods 0 5
requests.cpu 0 1
requests.memory 0 2Gi
requests.storage 0 64Gi
secrets 0 2
services 0 2Kita dapat melihat semua batasan sumber daya yang baru saja kita buat. Ini akan memastikan sumber daya namespace ini tidak melebihi batas yang ditentukan.
Apa yang Terjadi jika Batas Dilampaui?
- Jika membuat atau memperbarui sumber daya melanggar batasan kuota, permintaan akan gagal dengan kode status HTTP
403 FORBIDDENdengan pesan yang menjelaskan batasan yang dilanggar. - Jika kuota diaktifkan dalam namespace untuk sumber daya komputasi seperti
cpudanmemory, pengguna harus menentukan requests atau limits untuk nilai tersebut; jika tidak, sistem kuota dapat menolak pembuatan pod. - Kita dapat menggunakan
LimitRangeuntuk memberlakukan request dan limit default untuk sumber daya komputasi.
Referensi
Last updated on