All Products
Search
Document Center

Container Service for Kubernetes:Gunakan descheduling sadar hotspot untuk menyeimbangkan beban node

Last Updated:Jun 19, 2026

Descheduler ack-koordinator mendeteksi node yang kelebihan beban berdasarkan pemanfaatan resource aktual dan mengusir Pod untuk menyeimbangkan kembali kluster.

Topik ini menjelaskan cara menginstal descheduler, mengaktifkan descheduling sadar hotspot, dan mengonfigurasi parameter lanjutannya.

Batasan

  • Hanya kluster ACK managed Pro yang didukung.

  • Versi komponen yang diperlukan:

    Komponen Versi
    ACK Scheduler v1.22.15-ack-4.0 atau lebih baru, v1.24.6-ack-4.0 atau lebih baru
    ack-koordinator v1.1.1-ack.1 atau lebih baru
    Helm v3.0 atau lebih baru
Penting

Descheduler Koordinator hanya mengusir Pod; penjadwal ulang dilakukan oleh ACK Scheduler. Gunakan descheduling bersama dengan load-aware scheduling untuk mencegah Pod yang diusir kembali ditempatkan pada node hotspot.

Penting

Saat descheduling berlangsung, Pod lama diusir sebelum Pod baru dibuat. Pastikan aplikasi Anda memiliki replika redundan yang cukup untuk menjaga ketersediaan.

Penting

Descheduling menggunakan API eviction standar Kubernetes. Pastikan Pod Anda dapat dijalankan ulang (re-entrant) sehingga restart setelah eviction tidak mengganggu layanan Anda.

Penagihan

ack-koordinator gratis untuk diinstal dan digunakan. Biaya tambahan mungkin berlaku dalam skenario berikut:

  • Resource node pekerja: ack-koordinator adalah komponen self-managed yang mengonsumsi resource node pekerja. Konfigurasikan permintaan resource untuk setiap modul selama instalasi.

  • Metric kustom Prometheus: Jika Anda mengaktifkan Enable Prometheus Monitoring for ACK-Koordinator dan menggunakan Managed Service for Prometheus, metric yang diekspos dihitung sebagai metric kustom dan dikenai biaya. Biaya tergantung pada ukuran kluster dan jumlah aplikasi. Tinjau penagihan instans Prometheus sebelum mengaktifkan fitur ini. Kueri data penggunaan untuk memantau konsumsi resource Anda.

Cara kerja

Siklus eksekusi

Descheduler Koordinator berjalan secara berkala. Setiap siklus eksekusi memiliki tiga tahap:

Koordinator Descheduler execution procedure
  1. Pengumpulan data: Mengambil informasi node dan workload serta data pemanfaatan resource.

  2. Eksekusi plugin (contoh LowNodeLoad):

    1. Mengidentifikasi node hotspot berdasarkan highThresholds dan lowThresholds.

    2. Menelusuri semua node hotspot, memberi skor pada Pod yang memenuhi syarat, dan mengurutkannya untuk eviction. Lihat Kebijakan pemberian skor Pod.

    3. Memeriksa setiap Pod kandidat terhadap batasan migrasi—kapasitas kluster, pemanfaatan resource, dan batas rasio replika. Lihat Kebijakan descheduling hotspot sadar beban.

    4. Menandai Pod yang lolos sebagai kandidat migrasi dan melewati sisanya.

  3. Eviction dan migrasi Pod: Mengusir kandidat migrasi melalui API eviction.

Klasifikasi node

Plugin LowNodeLoad mengklasifikasikan node ke dalam tiga kategori berdasarkan dua ambang batas: lowThresholds (ambang batas idle) dan highThresholds (ambang batas hotspot).

Contoh dengan lowThresholds = 45% dan highThresholds = 70%:

Node classification diagram
  1. Node idle: Pemanfaatan resource di bawah lowThresholds (< 45%).

  2. Node normal: Pemanfaatan resource berada di antara lowThresholds dan highThresholds (45%–70%). Ini adalah rentang target.

  3. Node hotspot: Pemanfaatan resource melebihi highThresholds (> 70%). Pod diusir hingga beban node turun menjadi 70% atau di bawahnya.

Data pemanfaatan resource diperbarui setiap menit dan mencerminkan rata-rata selama 5 menit.

Jika semua node melebihi lowThresholds, beban kluster dianggap tinggi dan descheduling ditangguhkan, meskipun beberapa node melebihi highThresholds.

Kebijakan descheduling hotspot sadar beban

Kebijakan Deskripsi
Hot spot check retry Sebuah node diklasifikasikan sebagai hotspot hanya setelah melebihi highThresholds selama beberapa siklus berturut-turut (default: 5), mencegah false positive akibat lonjakan sesaat.
Node sorting Descheduling dimulai dari node hotspot dengan pemanfaatan tertinggi. CPU dan memori dibandingkan secara berurutan.
Pod scoring Untuk setiap node hotspot, Pod diberi skor dan diurutkan sebelum eviction: (1) kelas Priority lebih rendah terlebih dahulu (default adalah 0, yang terendah); (2) kelas QoS lebih rendah; (3) untuk priority dan QoS yang sama, Pod diurutkan berdasarkan pemanfaatan resource dan waktu startup. Konfigurasikan kelas Priority atau QoS untuk mengontrol urutan eviction.
Filter Membatasi ruang lingkup descheduling ke namespace, Pod, atau node tertentu menggunakan pemilih label. Lihat evictableNamespaces, podSelectors, dan nodeSelector di konfigurasi plugin LowNodeLoad.
Pre-check Sebelum eviction, descheduler memverifikasi: (1) terdapat node yang sesuai dengan Node Affinity, Node Selector, Tolerations, dan persyaratan resource; (2) node target memiliki kapasitas yang cukup tanpa melebihi highThresholds. Kapasitas tersedia = (highThresholds − beban saat ini) × kapasitas total. Contoh: beban 20%, highThresholds 70%, 96 vCore → (70% − 20%) × 96 = 48 vCore tersedia.
Migration throttling Membatasi migrasi Pod konkuren per node, namespace, dan workload. Jendela waktu mencegah Pod dalam workload yang sama bermigrasi terlalu sering. Kompatibel dengan Pod Disruption Budget (PDB) Kubernetes untuk kontrol ketersediaan detail halus.
Observability Event migrasi dipancarkan untuk setiap Pod, menunjukkan alasan dan statusnya. Jalankan kubectl get event | grep <pod-name> untuk melihat detail migrasi.

Prasyarat

Sebelum memulai, pastikan Anda memiliki:

  • kluster ACK managed Pro

  • ACK Scheduler v1.22.15-ack-4.0 atau lebih baru, ack-koordinator v1.1.1-ack.1 atau lebih baru, dan Helm v3.0 atau lebih baru

Langkah 1: Aktifkan descheduling di ack-koordinator

  • Instalasi baru: Instal ack-koordinator dan pilih Enable Descheduling For Ack-koordinator pada halaman konfigurasi.

  • Instalasi yang sudah ada: Pada halaman konfigurasi, pilih Enable Descheduling For Ack-koordinator. Lihat Modifikasi ack-koordinator.

Langkah 2: Aktifkan plugin LowNodeLoad

  1. Buat ConfigMap koord-descheduler-config.yaml untuk mengaktifkan plugin LowNodeLoad.

    # koord-descheduler-config.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: koord-descheduler-config
      namespace: kube-system
    data:
      koord-descheduler-config: |
        # Konfigurasi sistem untuk koord-descheduler. Jangan ubah bagian ini.
        apiVersion: descheduler/v1alpha2
        kind: DeschedulerConfiguration
        leaderElection:
          resourceLock: leases
          resourceName: koord-descheduler
          resourceNamespace: kube-system
        deschedulingInterval: 120s  # Interval eksekusi. Descheduler berjalan setiap 120 detik.
                                    # Tidak boleh melebihi detectorCacheTimeout (default: 5m).
        dryRun: false               # Atur ke true untuk menjalankan dalam mode read-only (tanpa eviction).
        # Akhir konfigurasi sistem.
    
        profiles:
        - name: koord-descheduler
          plugins:
            balance:
              enabled:
                - name: LowNodeLoad      # Aktifkan plugin LowNodeLoad untuk descheduling hotspot.
            evict:
              enabled:
                - name: MigrationController  # Aktifkan controller eviction dan migrasi.
    
          pluginConfig:
          - name: MigrationController
            args:
              apiVersion: descheduler/v1alpha2
              kind: MigrationControllerArgs
              defaultJobMode: EvictDirectly
    
          - name: LowNodeLoad
            args:
              apiVersion: descheduler/v1alpha2
              kind: LowNodeLoadArgs
    
              # Sebuah node dianggap idle jika penggunaan SEMUA resource berada di bawah lowThresholds.
              lowThresholds:
                cpu: 20    # Pemanfaatan CPU 20%
                memory: 30 # Pemanfaatan memori 30%
    
              # Sebuah node dianggap hotspot jika penggunaan SALAH SATU resource melebihi highThresholds.
              highThresholds:
                cpu: 50    # Pemanfaatan CPU 50%
                memory: 60 # Pemanfaatan memori 60%
    
              # Membatasi ruang lingkup descheduling ke namespace tertentu.
              # include dan exclude saling eksklusif—konfigurasikan hanya salah satu.
              evictableNamespaces:
                include:
                  - default
                # exclude:
                #   - "kube-system"
                #   - "koordinator-system"
  2. Terapkan ConfigMap ke kluster.

    kubectl apply -f koord-descheduler-config.yaml
  3. Mulai ulang Koordinator Descheduler untuk memuat konfigurasi baru.

    kubectl -n kube-system scale deploy ack-koord-descheduler --replicas 0
    kubectl -n kube-system scale deploy ack-koord-descheduler --replicas 1

Langkah 3 (opsional): Aktifkan load-aware scheduling

Untuk penyeimbangan beban optimal, aktifkan load-aware scheduling agar ACK Scheduler menghindari menempatkan Pod pada node hotspot setelah eviction.

Atur loadAwareThreshold agar sesuai dengan highThresholds. Nilai yang tidak sesuai dapat menyebabkan Pod yang diusir dijadwalkan ulang ke node hotspot, terutama jika hanya ada sedikit node dengan pemanfaatan serupa.

Langkah 4: Verifikasi descheduling

Contoh ini menggunakan kluster tiga node di mana setiap node memiliki 104 core dan memori 396 GiB.

  1. Buat file stress-demo.yaml dengan konten berikut.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: stress-demo
      namespace: default
      labels:
        app: stress-demo
    spec:
      replicas: 6
      selector:
        matchLabels:
          app: stress-demo
      template:
        metadata:
          name: stress-demo
          labels:
            app: stress-demo
        spec:
          containers:
            - args:
                - '--vm'
                - '2'
                - '--vm-bytes'
                - '1600M'
                - '-c'
                - '2'
                - '--vm-hang'
                - '2'
              command:
                - stress
              image: polinux/stress
              imagePullPolicy: Always
              name: stress
              resources:
                limits:
                  cpu: '2'
                  memory: 4Gi
                requests:
                  cpu: '2'
                  memory: 4Gi
          restartPolicy: Always
  2. Terapkan workload pengujian stres.

    kubectl create -f stress-demo.yaml

    Output yang diharapkan:

    deployment.apps/stress-demo created
  3. Verifikasi Pod sedang berjalan dan catat node tempatnya ditempatkan.

    kubectl get pod -o wide

    Output yang diharapkan:

    NAME                           READY   STATUS    RESTARTS   AGE   IP            NODE                     NOMINATED NODE   READINESS GATES
    stress-demo-588f9646cf-s****   1/1     Running   0          82s   10.XX.XX.53   cn-beijing.10.XX.XX.53   <none>           <none>
  4. Tingkatkan beban pada cn-beijing.10.XX.XX.53 dan periksa pemanfaatan node.

    kubectl top node

    Output yang diharapkan:

    NAME                      CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
    cn-beijing.10.XX.XX.215   17611m       17%    24358Mi         6%
    cn-beijing.10.XX.XX.53    63472m       63%    11969Mi         3%

    Node cn-beijing.10.XX.XX.53 berada pada 63% CPU, melebihi ambang batas hotspot 50%. Node cn-beijing.10.XX.XX.215 berada pada 17% CPU, di bawah ambang batas idle 20%.

  5. Aktifkan plugin LowNodeLoad seperti yang dijelaskan dalam Langkah 2: Aktifkan plugin LowNodeLoad.

  6. Amati perubahan Pod.

    Secara default, sebuah node harus melebihi highThresholds selama lima pemeriksaan berturut-turut (~10 menit pada interval default 120 detik) untuk diklasifikasikan sebagai hotspot.
    kubectl get pod -w

    Output yang diharapkan:

    NAME                           READY   STATUS             RESTARTS   AGE   IP             NODE                     NOMINATED NODE   READINESS GATES
    stress-demo-588f9646cf-s****   1/1     Terminating        0          59s   10.XX.XX.53    cn-beijing.10.XX.XX.53   <none>           <none>
    stress-demo-588f9646cf-7****   1/1     ContainerCreating  0          10s   10.XX.XX.215   cn-beijing.10.XX.XX.215  <none>           <none>
  7. Periksa event eviction.

    kubectl get event | grep stress-demo-588f9646cf-s****

    Output yang diharapkan:

    2m14s   Normal   Evicting        podmigrationjob/00fe88bd-****   Pod "default/stress-demo-588f9646cf-s****" diusir dari node "cn-beijing.10.XX.XX.53" dengan alasan "node kelebihan beban, penggunaan cpu(68,53%)>ambang(50,00%)"
    101s    Normal   EvictComplete   podmigrationjob/00fe88bd-****   Pod "default/stress-demo-588f9646cf-s****" telah diusir
    2m14s   Normal   Descheduled     pod/stress-demo-588f9646cf-s****   Pod diusir dari node "cn-beijing.10.XX.XX.53" dengan alasan "node kelebihan beban, penggunaan cpu(68,53%)>ambang(50,00%)"
    2m14s   Normal   Killing         pod/stress-demo-588f9646cf-s****   Menghentikan kontainer stress

    Pod pada node hotspot telah diusir dan dimigrasikan ke cn-beijing.10.XX.XX.215.

Konfigurasi lanjutan

Semua parameter Koordinator Descheduler dikonfigurasi dalam ConfigMap dari Langkah 2.

# koord-descheduler-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: koord-descheduler-config
  namespace: kube-system
data:
  koord-descheduler-config: |
    # Konfigurasi sistem. Jangan ubah bagian ini.
    apiVersion: descheduler/v1alpha2
    kind: DeschedulerConfiguration
    leaderElection:
      resourceLock: leases
      resourceName: koord-descheduler
      resourceNamespace: kube-system
    deschedulingInterval: 120s  # Interval eksekusi. Tidak boleh melebihi detectorCacheTimeout.
    dryRun: false               # Atur ke true untuk mode read-only (tanpa eviction).
    # Akhir konfigurasi sistem.

    profiles:
    - name: koord-descheduler
      plugins:
        deschedule:
          disabled:
            - name: "*"  # Semua plugin dinonaktifkan secara default (ditampilkan hanya sebagai referensi).
        balance:
          enabled:
            - name: LowNodeLoad
        evict:
          disabled:
            - name: "*"  # Semua plugin dinonaktifkan secara default (ditampilkan hanya sebagai referensi).
          enabled:
            - name: MigrationController

      pluginConfig:
      - name: MigrationController
        args:
          apiVersion: descheduler/v1alpha2
          kind: MigrationControllerArgs
          defaultJobMode: EvictDirectly
          maxMigratingPerNode: 1       # Maksimum Pod yang bermigrasi secara simultan per node. 0 = tak terbatas.
          maxMigratingPerNamespace: 1  # Maksimum Pod yang bermigrasi secara simultan per namespace.
          maxMigratingPerWorkload: 1   # Maksimum Pod yang bermigrasi secara simultan per workload (misalnya, Deployment).
          maxUnavailablePerWorkload: 2 # Maksimum replika tidak tersedia per workload selama migrasi.
          evictLocalStoragePods: false # Apakah akan mengusir Pod yang menggunakan volume HostPath atau emptyDir.
          objectLimiters:
            workload:               # Paling banyak 1 replika dimigrasikan per workload dalam 5 menit.
              duration: 5m
              maxMigrating: 1

      - name: LowNodeLoad
        args:
          apiVersion: descheduler/v1alpha2
          kind: LowNodeLoadArgs

          lowThresholds:
            cpu: 20
            memory: 30
          highThresholds:
            cpu: 50
            memory: 60

          anomalyCondition:
            consecutiveAbnormalities: 5  # Jumlah pemeriksaan berturut-turut di atas highThresholds
                                          # sebelum sebuah node diklasifikasikan sebagai hotspot.
                                          # Penghitung diatur ulang setelah eviction.

          detectorCacheTimeout: "5m"  # Durasi cache untuk pemeriksaan hotspot.
                                      # Harus >= deschedulingInterval.

          evictableNamespaces:
            include:
              - default
            # exclude:
            #   - "kube-system"
            #   - "koordinator-system"

          nodeSelector:  # Proses hanya node yang ditentukan.
            matchLabels:
              alibabacloud.com/nodepool-id: np77f520e1108f47559e63809713ce****

          podSelectors:  # Proses hanya Pod yang ditentukan.
          - name: lsPods
            selector:
              matchLabels:
                koordinator.sh/qosClass: "LS"

Konfigurasi sistem Koordinator Descheduler

Parameter Tipe Nilai Deskripsi Contoh
dryRun boolean true / false (default) Saklar mode read-only. Saat diaktifkan, tidak ada migrasi Pod yang dimulai. false
deschedulingInterval time.Duration > 0s Interval eksekusi. Tidak boleh melebihi detectorCacheTimeout di plugin LowNodeLoad. 120s

Konfigurasi kontrol eviction dan migrasi

Parameter Tipe Nilai Deskripsi Contoh
maxMigratingPerNode int64 ≥ 0 (default: 2) Maksimum Pod yang bermigrasi secara konkuren per node. 0 = tak terbatas. 2
maxMigratingPerNamespace int64 ≥ 0 (default: tak terbatas) Maksimum Pod yang bermigrasi secara konkuren per namespace. 0 = tak terbatas. 1
maxMigratingPerWorkload intOrString ≥ 0 (default: 10%) Maksimum Pod atau persentase yang bermigrasi per workload (misalnya, Deployment). 0 = tak terbatas. Workload dengan satu replika dikecualikan. 1 atau 10%
maxUnavailablePerWorkload intOrString ≥ 0 (default: 10%), kurang dari total replika Maksimum replika tidak tersedia atau persentase per workload. 0 = tak terbatas. 1 atau 10%
evictLocalStoragePods boolean true / false (default) Apakah akan mengusir Pod dengan volume HostPath atau emptyDir. Dinonaktifkan secara default demi keamanan data. false
objectLimiters.workload struct Duration > 0s (default: 5m); MaxMigrating ≥ 0 (default: 10%) Throttling migrasi tingkat workload. Duration: jendela waktu. MaxMigrating: maksimum replika yang dimigrasikan dalam jendela tersebut. Default mengikuti maxMigratingPerWorkload. duration: 5m / maxMigrating: 1 — maksimum 1 replika per workload dalam 5 menit.

Konfigurasi plugin LowNodeLoad

Parameter Tipe Nilai Deskripsi Contoh
highThresholds map[string]float64 [0, 100] (CPU dan memori, dalam persentase) Ambang batas hotspot. Pod pada node di atas ambang ini memenuhi syarat untuk eviction. Jika semua node melebihi lowThresholds, descheduling ditangguhkan. cpu: 55 / memory: 75
lowThresholds map[string]float64 [0, 100] (CPU dan memori, dalam persentase) Ambang batas idle. Jika semua node melebihi ambang ini, beban kluster secara keseluruhan dianggap tinggi dan descheduling ditangguhkan. cpu: 25 / memory: 25
anomalyCondition.consecutiveAbnormalities int64 > 0 (default: 5) Jumlah siklus berturut-turut sebuah node harus melebihi highThresholds untuk diklasifikasikan sebagai hotspot. Diatur ulang setelah eviction. 5
detectorCacheTimeout \*metav1.Duration Lihat format Duration (default: 5m) Durasi cache untuk pemeriksaan hotspot. Harus ≥ deschedulingInterval. 1h, 300s, 2m30s
evictableNamespaces include: string / exclude: string Namespace dalam kluster Membatasi ruang lingkup descheduling ke namespace tertentu. Biarkan kosong untuk memproses semua Pod. include dan exclude saling eksklusif. exclude: ["kube-system", "koordinator-system"]
nodeSelector metav1.LabelSelector Lihat Label dan pemilih Membatasi ruang lingkup descheduling ke node tertentu menggunakan pemilih label. Mendukung kelompok node tunggal (matchLabels) dan beberapa kelompok node (matchExpressions). matchLabels: {alibabacloud.com/nodepool-id: np****}
podSelectors daftar PodSelector Lihat Label dan pemilih Membatasi ruang lingkup descheduling ke Pod tertentu menggunakan pemilih label. Mendukung beberapa grup pemilih. matchLabels: {koordinator.sh/qosClass: "LS"}

FAQ

Pemanfaatan node melebihi ambang batas tetapi Pod tidak diusir

Penyebab paling umum adalah konfigurasi descheduler yang tidak aktif. Periksa secara berurutan:

  1. Ruang lingkup tidak dikonfigurasi: Descheduler hanya memproses namespace dan node yang secara eksplisit disertakan (atau tidak dikecualikan). Verifikasi evictableNamespaces dan nodeSelector.

  2. Descheduler tidak dimulai ulang setelah perubahan konfigurasi: Perubahan konfigurasi memerlukan restart. Lihat Langkah 2 untuk instruksi.

  3. Interval lebih panjang daripada timeout cache: deschedulingInterval (default: 2 menit) tidak boleh melebihi detectorCacheTimeout (default: 5 menit), atau deteksi hotspot gagal. Sesuaikan dan mulai ulang.

  4. Node tidak konsisten di atas ambang batas: Descheduler menggunakan rata-rata terhaluskan. Sebuah node diklasifikasikan sebagai hotspot hanya setelah melebihi highThresholds selama consecutiveAbnormalities siklus berturut-turut (default: 5, ~10 menit). kubectl top node hanya mencerminkan menit terakhir—pantau dalam periode yang lebih panjang untuk mengonfirmasi pemanfaatan berkelanjutan.

  5. Kapasitas kluster tidak mencukupi: Sebelum mengusir Pod, descheduler memverifikasi bahwa node lain memiliki kapasitas bebas yang cukup. Jika tidak ada, eviction dilewati. Tambahkan node untuk meningkatkan kapasitas.

  6. Workload satu replika: Pod satu replika tidak diusir secara default. Untuk mengganti, tambahkan anotasi descheduler.alpha.kubernetes.io/evict: "true" ke Pod atau spec.template.metadata workload. Tidak didukung di ack-koordinator v1.3.0-ack1.6 hingga v1.3.0-ack1.8. Tingkatkan ke versi terbaru untuk menggunakan fitur ini.

  7. Pod menggunakan HostPath atau emptyDir: Dikecualikan dari descheduling secara default. Atur evictLocalStoragePods: true di MigrationController untuk mengaktifkan eviction. Lihat Konfigurasi kontrol eviction dan migrasi.

  8. Terlalu banyak replika tidak tersedia atau sedang bermigrasi: Jika replika tidak tersedia atau sedang bermigrasi mencapai maxUnavailablePerWorkload atau maxMigratingPerWorkload, eviction lebih lanjut diblokir. Tunggu eviction yang sedang berlangsung atau tingkatkan batas ini.

  9. Jumlah replika ≤ batas migrasi: Jika total replika ≤ maxMigratingPerWorkload atau maxUnavailablePerWorkload, workload dilewati. Kurangi nilai-nilai ini atau gunakan persentase.

Descheduler sering dimulai ulang

ConfigMap yang tidak valid atau hilang menyebabkan loop restart. Verifikasi format ConfigMap terhadap Konfigurasi lanjutan, lalu mulai ulang seperti yang dijelaskan dalam Langkah 2.

Cara kerja load-aware scheduling dan hot spot descheduling secara bersamaan

Aktifkan kedua fitur untuk penyeimbangan beban optimal. Descheduling mengusir Pod dari node yang kelebihan beban; load-aware scheduling menempatkan Pod yang dijadwalkan ulang pada node dengan pemanfaatan lebih rendah.

Atur loadAwareThreshold agar sesuai dengan highThresholds. Lihat Menggunakan penjadwalan yang sadar beban dan Kebijakan penjadwalan.

Data pemanfaatan apa yang digunakan descheduler?

Descheduler menghitung rata-rata terhaluskan selama beberapa siklus. Eviction dipicu hanya ketika penggunaan rata-rata tetap di atas highThresholds selama siklus berturut-turut yang dikonfigurasi (default: ~10 menit).

Descheduler mengecualikan page cache dari perhitungan memori (dapat dikembalikan oleh OS). kubectl top node menyertakan page cache—gunakan Managed Service for Prometheus untuk melihat metrik aktual.

Langkah selanjutnya