Tüm Ürünler
Search
Belge Merkezi

Container Service for Kubernetes:Use hotspot-aware descheduling to balance node loads

Son Güncelleme:Oct 06, 2026

ack-koordinator Descheduler, gerçek kaynak kullanımına göre aşırı yüklenmiş düğümleri tespit eder ve kümeyi yeniden dengelemek için Pod'ları tahliye eder.

Bu konuda, yeniden planlayıcının nasıl kurulacağı, hot spot farkındalıklı yeniden planlamanın nasıl etkinleştirileceği ve gelişmiş parametrelerinin nasıl yapılandırılacağı açıklanmaktadır.

Sınırlamalar

  • Yalnızca ACK yönetilen Pro kümeleri desteklenir.

  • Gerekli bileşen sürümleri:


    Bileşen


    Sürüm


    ACK Scheduler


    v1.22.15-ack-4.0 veya üzeri, v1.24.6-ack-4.0 veya üzeri


    ack-koordinator


    v1.1.1-ack.1 veya üzeri


    Helm


    v3.0 veya üzeri

Önemli

Koordinator Descheduler yalnızca Pod'ları tahliye eder; yeniden planlama işlemini ACK Scheduler yönetir. Tahliye edilen Pod'ların tekrar hot spot düğümlere yerleşmesini önlemek için yeniden planlamayı yük farkındalıklı zamanlama ile birlikte kullanın.

Önemli

Yeniden planlama sırasında, yeni Pod'lar oluşturulmadan önce eski Pod'lar tahliye edilir. Kullanılabilirliği korumak için uygulamanızın yeterli yedek çoğaltmaya sahip olduğundan emin olun.

Önemli

Yeniden planlama, standart Kubernetes tahliye API'sini kullanır. Tahliye sonrası yeniden başlatmaların hizmetinizi kesintiye uğratmaması için Pod'larınızın yeniden giriş yapılabilir (re-entrant) olduğundan emin olun.

Faturalandırma

ack-koordinator'u kurmak ve kullanmak ücretsizdir. Aşağıdaki senaryolarda ek ücretler uygulanabilir:

  • Çalışan düğüm kaynakları: ack-koordinator, çalışan düğüm kaynaklarını tüketen kendi kendine yönetilen bir bileşendir. Kurulum sırasında her modül için kaynak isteklerini yapılandırın.

  • Prometheus özel ölçümleri: Enable Prometheus Monitoring for ACK-Koordinator seçeneğini etkinleştirir ve Managed Service for Prometheus kullanırsanız, sunulan ölçümler özel ölçümler olarak sayılır ve ücretlendirilir. Ücretler küme boyutuna ve uygulama sayısına bağlıdır. Bu özelliği etkinleştirmeden önce Prometheus örneklerinin faturalandırmasını inceleyin. Kaynak tüketiminizi izlemek için kullanım verilerini sorgulayın.

Nasıl çalışır

Çalıştırma döngüsü

Koordinator Descheduler periyodik olarak çalışır. Her çalıştırma döngüsü üç aşamadan oluşur:

Koordinator Descheduler execution procedure

  1. Veri toplama: Düğüm ve iş yükü bilgileri ile kaynak kullanım verilerini getirir.

  2. Eklenti çalıştırması (LowNodeLoad örneği):

    1. highThresholds ve lowThresholds değerlerine göre hot spot düğümleri belirler.

    2. Tüm hot spot düğümleri tarar, uygun Pod'ları puanlar ve tahliye için sıralar. Bkz. Pod puanlama ilkesi.

    3. Her aday Pod'u küme kapasitesi, kaynak kullanımı ve çoğaltma oranı sınırları gibi geçiş kısıtlamalarına göre kontrol eder. Bkz. Yük farkındalıklı hot spot yeniden planlama ilkeleri.

    4. Kriterleri karşılayan Pod'ları geçiş adayı olarak işaretler, diğerlerini atlar.

  3. Pod tahliyesi ve geçişi: Geçiş adaylarını tahliye API'si aracılığıyla tahliye eder.

Düğüm sınıflandırması

LowNodeLoad eklentisi, iki eşik değerine göre düğümleri üç kategoriye ayırır: lowThresholds (boşta kalma eşiği) ve highThresholds (hot spot eşiği).

lowThresholds = %45 ve highThresholds = %70 örneği:

Node classification diagram

  1. Boşta düğüm: Kaynak kullanımı lowThresholds değerinin altındadır (< %45).

  2. Normal düğüm: Kaynak kullanımı lowThresholds ve highThresholds arasındadır (%45–%70). Bu, hedef aralıktır.

  3. Hot spot düğüm: Kaynak kullanımı highThresholds değerini aşar (> %70). Düğüm yükü %70 veya altına düşene kadar Pod'lar tahliye edilir.

Kaynak kullanım verileri her dakika güncellenir ve 5 dakikalık ortalamayı yansıtır.

Tüm düğümler lowThresholds değerini aşarsa, bazı düğümler highThresholds değerini aşsa bile küme yükünün yüksek olduğu kabul edilir ve yeniden planlama askıya alınır.

Yük farkındalıklı hot spot yeniden planlama ilkeleri


İlke


Açıklama


Hot spot kontrolünü yeniden dene


Bir düğüm, anlık yükselmelerden kaynaklanan yanlış pozitifleri önlemek için art arda döngülerde (varsayılan: 5) highThresholds değerini aştığında hot spot olarak sınıflandırılır.


Düğüm sıralaması


Yeniden planlama, en yüksek kullanıma sahip hot spot düğümle başlar. CPU ve bellek sırayla karşılaştırılır.


Pod puanlama


Her hot spot düğüm için Pod'lar tahliyeden önce puanlanır ve sıralanır: (1) daha düşük Priority sınıfı önce (varsayılan en düşük olan 0'dır); (2) daha düşük QoS sınıfı; (3) eşit öncelik ve QoS için Pod'lar kaynak kullanımına ve başlangıç zamanına göre sıralanır. Tahliye sırasını kontrol etmek için Priority veya QoS sınıflarını yapılandırın.


Filtre


Etiket seçicileri kullanarak yeniden planlamayı belirli ad alanlarına, Pod'lara veya düğümlere daraltır. Bkz. evictableNamespaces, podSelectors ve nodeSelector içinde LowNodeLoad eklenti yapılandırması.


Ön kontrol


Tahliyeden önce yeniden planlayıcı şunları doğrular: (1) Düğüm Afinite, Düğüm Seçici, Toleranslar ve kaynak gereksinimleriyle eşleşen düğümler mevcut; (2) Hedef düğüm highThresholds değerini aşmadan yeterli kapasiteye sahip. Kullanılabilir kapasite = (highThresholds − mevcut yük) × toplam kapasite. Örnek: %20 yük, %70 highThresholds, 96 vCores → (%70 − %20) × 96 = 48 kullanılabilir vCore.


Geçişi kısıtlama


Düğüm, ad alanı ve iş yükü başına eşzamanlı Pod geçişlerini sınırlar. Aynı iş yükündeki Pod'ların çok sık geçiş yapmasını önlemek için bir zaman penceresi kullanılır. Ayrıntılı kullanılabilirlik kontrolü için Kubernetes Pod Kesinti Bütçesi (PDB) ile uyumludur.


Gözlemlenebilirlik


Her Pod için geçiş olayları yayımlanır; neden ve durum gösterilir. Geçiş ayrıntılarını görüntülemek için kubectl get event | grep <pod-name> komutunu çalıştırın.

Ön koşullar

Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:

  • Bir ACK yönetilen Pro kümesi

  • ACK Scheduler v1.22.15-ack-4.0 veya üzeri, ack-koordinator v1.1.1-ack.1 veya üzeri ve Helm v3.0 veya üzeri

Adım 1: ack-koordinator'da yeniden planlamayı etkinleştirin

  • Yeni kurulum: ack-koordinator'u yükleyin ve yapılandırma sayfasında Enable ACK-Koordinator Descheduling Module seçeneğini işaretleyin.

  • Mevcut kurulum: Yapılandırma sayfasında Enable ACK-Koordinator Descheduling Module seçeneğini işaretleyin. Bkz. ack-koordinator'u değiştirme.

Adım 2: LowNodeLoad eklentisini etkinleştirin

  1. LowNodeLoad eklentisini etkinleştirmek için bir koord-descheduler-config.yaml ConfigMap oluşturun.

    # koord-descheduler-config.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: koord-descheduler-config
      namespace: kube-system
    data:
      koord-descheduler-config: |
        # System configuration for koord-descheduler. Do not modify this section.
        apiVersion: descheduler/v1alpha2
        kind: DeschedulerConfiguration
        leaderElection:
          resourceLock: leases
          resourceName: koord-descheduler
          resourceNamespace: kube-system
        deschedulingInterval: 120s  # Execution interval. The descheduler runs every 120s.
                                    # Must not exceed detectorCacheTimeout (default: 5m).
        dryRun: false               # Set to true to run in read-only mode (no evictions).
        # End of system configuration.
    
        profiles:
        - name: koord-descheduler
          plugins:
            balance:
              enabled:
                - name: LowNodeLoad      # Enable the LowNodeLoad plugin for hot spot descheduling.
            evict:
              enabled:
                - name: MigrationController  # Enable the eviction and migration controller.
    
          pluginConfig:
          - name: MigrationController
            args:
              apiVersion: descheduler/v1alpha2
              kind: MigrationControllerArgs
              defaultJobMode: EvictDirectly
    
          - name: LowNodeLoad
            args:
              apiVersion: descheduler/v1alpha2
              kind: LowNodeLoadArgs
    
              # A node is idle if usage of ALL resources is below lowThresholds.
              lowThresholds:
                cpu: 20    # 20% CPU utilization
                memory: 30 # 30% memory utilization
    
              # A node is a hot spot if usage of ANY resource exceeds highThresholds.
              highThresholds:
                cpu: 50    # 50% CPU utilization
                memory: 60 # 60% memory utilization
    
              # Scopes descheduling to specific namespaces.
              # include and exclude are mutually exclusive—configure only one.
              evictableNamespaces:
                include:
                  - default
                # exclude:
                #   - "kube-system"
                #   - "koordinator-system"
  2. ConfigMap'i kümeye uygulayın.

    kubectl apply -f koord-descheduler-config.yaml
  3. Yeni yapılandırmayı yüklemek için Koordinator Descheduler'ı yeniden başlatın.

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

Adım 3 (isteğe bağlı): Yük farkındalıklı zamanlamayı etkinleştirin

Optimal yük dengeleme için, ACK Scheduler'ın tahliye sonrası Pod'ları hot spot düğümlere yerleştirmemesini sağlamak amacıyla yük farkındalıklı zamanlamayı etkinleştirin.

loadAwareThreshold değerini highThresholds ile eşleşecek şekilde ayarlayın. Uyuşmazlık durumunda, özellikle benzer kullanıma sahip az sayıda düğüm varsa, tahliye edilen Pod'lar hot spot düğümlere yeniden planlanabilir.

Adım 4: Yeniden planlamayı doğrulayın

Bu örnekte, her düğümün 104 çekirdek ve 396 GiB belleğe sahip olduğu üç düğümlü bir küme kullanılmaktadır.

  1. Aşağıdaki içeriğe sahip bir stress-demo.yaml dosyası oluşturun.

    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. Stres testi iş yükünü dağıtın.

    kubectl create -f stress-demo.yaml

    Beklenen çıktı:

    deployment.apps/stress-demo created
  3. Pod'ların çalıştığını doğrulayın ve atanmış düğümlerini not edin.

    kubectl get pod -o wide

    Beklenen çıktı:

    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. cn-beijing.10.XX.XX.53 üzerindeki yükü artırın ve düğüm kullanımını kontrol edin.

    kubectl top node

    Beklenen çıktı:

    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%

    cn-beijing.10.XX.XX.53 düğümü, %50'lik hot spot eşiğini aşan %63 CPU kullanımına sahiptir. cn-beijing.10.XX.XX.215 düğümü ise %20'lik boşta kalma eşiğinin altında olan %17 CPU kullanımına sahiptir.

  5. Adım 2: LowNodeLoad eklentisini etkinleştirin bölümünde açıklandığı gibi LowNodeLoad eklentisini etkinleştirin.

  6. Pod değişikliklerini izleyin.

    Varsayılan olarak, bir düğümün hot spot olarak sınıflandırılması için beş ardışık kontrolde (~120 saniyelik varsayılan aralıkla ~10 dakika) highThresholds değerini aşması gerekir.
    kubectl get pod -w

    Beklenen çıktı:

    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. Tahliye olayını kontrol edin.

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

    Beklenen çıktı:

    2m14s   Normal   Evicting        podmigrationjob/00fe88bd-****   Pod "default/stress-demo-588f9646cf-s****" evicted from node "cn-beijing.10.XX.XX.53" by the reason "node is overutilized, cpu usage(68.53%)>threshold(50.00%)"
    101s    Normal   EvictComplete   podmigrationjob/00fe88bd-****   Pod "default/stress-demo-588f9646cf-s****" has been evicted
    2m14s   Normal   Descheduled     pod/stress-demo-588f9646cf-s****   Pod evicted from node "cn-beijing.10.XX.XX.53" by the reason "node is overutilized, cpu usage(68.53%)>threshold(50.00%)"
    2m14s   Normal   Killing         pod/stress-demo-588f9646cf-s****   Stopping container stress

    Hot spot düğümdeki Pod tahliye edilmiş ve cn-beijing.10.XX.XX.215 düğümüne taşınmıştır.

Gelişmiş yapılandırma

Tüm Koordinator Descheduler parametreleri, Adım 2'deki ConfigMap içinde yapılandırılır.

# koord-descheduler-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: koord-descheduler-config
  namespace: kube-system
data:
  koord-descheduler-config: |
    # System configuration. Do not modify this section.
    apiVersion: descheduler/v1alpha2
    kind: DeschedulerConfiguration
    leaderElection:
      resourceLock: leases
      resourceName: koord-descheduler
      resourceNamespace: kube-system
    deschedulingInterval: 120s  # Execution interval. Must not exceed detectorCacheTimeout.
    dryRun: false               # Set to true for read-only mode (no evictions).
    # End of system configuration.

    profiles:
    - name: koord-descheduler
      plugins:
        deschedule:
          disabled:
            - name: "*"  # All plugins disabled by default (shown for reference only).
        balance:
          enabled:
            - name: LowNodeLoad
        evict:
          disabled:
            - name: "*"  # All plugins disabled by default (shown for reference only).
          enabled:
            - name: MigrationController

      pluginConfig:
      - name: MigrationController
        args:
          apiVersion: descheduler/v1alpha2
          kind: MigrationControllerArgs
          defaultJobMode: EvictDirectly
          maxMigratingPerNode: 1       # Max Pods migrating simultaneously per node. 0 = unlimited.
          maxMigratingPerNamespace: 1  # Max Pods migrating simultaneously per namespace.
          maxMigratingPerWorkload: 1   # Max Pods migrating simultaneously per workload (e.g., Deployment).
          maxUnavailablePerWorkload: 2 # Max unavailable replicas per workload during migration.
          evictLocalStoragePods: false # Whether to evict Pods using HostPath or emptyDir volumes.
          objectLimiters:
            workload:               # At most 1 replica migrated per workload within 5 minutes.
              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  # Number of consecutive checks above highThresholds
                                          # before a node is classified as a hot spot.
                                          # Counter resets after eviction.

          detectorCacheTimeout: "5m"  # Cache duration for hot spot checks.
                                      # Must be >= deschedulingInterval.

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

          nodeSelector:  # Process only the specified nodes.
            matchLabels:
              alibabacloud.com/nodepool-id: np77f520e1108f47559e63809713ce****

          podSelectors:  # Process only the specified Pods.
          - name: lsPods
            selector:
              matchLabels:
                koordinator.sh/qosClass: "LS"

Koordinator Descheduler sistem yapılandırması


Parametre


Tür


Değer


Açıklama


Örnek


dryRun


boolean


true / false (varsayılan)


Salt okunur mod anahtarı. Etkinleştirildiğinde hiçbir Pod geçişi başlatılmaz.


false


deschedulingInterval


time.Duration


> 0s


Çalıştırma aralığı. LowNodeLoad eklentisindeki detectorCacheTimeout değerini aşmamalıdır.


120s

Tahliye ve geçiş kontrolü yapılandırması


Parametre


Tür


Değer


Açıklama


Örnek


maxMigratingPerNode


int64


≥ 0 (varsayılan: 2)


Düğüm başına eşzamanlı geçen maksimum Pod sayısı. 0 = sınırsız.


2


maxMigratingPerNamespace


int64


≥ 0 (varsayılan: sınırsız)


Ad alanı başına eşzamanlı geçen maksimum Pod sayısı. 0 = sınırsız.


1


maxMigratingPerWorkload


intOrString


≥ 0 (varsayılan: %10)


İş yükü (ör. Deployment) başına geçen maksimum Pod sayısı veya yüzdesi. 0 = sınırsız. Tek çoğaltmalı iş yükleri hariç tutulur.


1 veya 10%


maxUnavailablePerWorkload


intOrString


≥ 0 (varsayılan: %10), toplam çoğaltma sayısından az


İş yükü başına kullanılamayan maksimum çoğaltma sayısı veya yüzdesi. 0 = sınırsız.


1 veya 10%


evictLocalStoragePods


boolean


true / false (varsayılan)


HostPath veya emptyDir birimleri kullanan Pod'ların tahliye edilip edilmeyeceği. Veri güvenliği için varsayılan olarak devre dışıdır.


false


objectLimiters.workload


struct


Süre > 0s (varsayılan: 5m); MaxMigrating ≥ 0 (varsayılan: %10)


İş yükü düzeyinde geçiş kısıtlaması. Duration: zaman penceresi. MaxMigrating: bu pencerede geçen maksimum çoğaltma sayısı. Varsayılan olarak maxMigratingPerWorkload değerine eşittir.


duration: 5m / maxMigrating: 1 — 5 dakika içinde iş yükü başına en fazla 1 çoğaltma.

LowNodeLoad eklenti yapılandırması


Parametre


Tür


Değer


Açıklama


Örnek


highThresholds


map[string]float64


[0, 100] (CPU ve bellek, yüzde olarak)


Hot spot eşiği. Bu değerin üzerindeki düğümlerdeki Pod'lar tahliye için uygundur. Tüm düğümler lowThresholds değerini aşarsa yeniden planlama askıya alınır.


cpu: 55 / memory: 75


lowThresholds


map[string]float64


[0, 100] (CPU ve bellek, yüzde olarak)


Boşta kalma eşiği. Tüm düğümler bu değeri aşarsa genel küme yükünün yüksek olduğu kabul edilir ve yeniden planlama askıya alınır.


cpu: 25 / memory: 25


anomalyCondition.consecutiveAbnormalities


int64


> 0 (varsayılan: 5)


Bir düğümün hot spot olarak sınıflandırılması için highThresholds değerini aşması gereken ardışık döngü sayısı. Tahliyeden sonra sayaç sıfırlanır.


5


detectorCacheTimeout


\*metav1.Duration


Bkz. Süre formatı (varsayılan: 5m)


Hot spot kontrolleri için önbellek süresi. deschedulingInterval değerinden büyük veya ona eşit olmalıdır.


1h, 300s, 2m30s


evictableNamespaces


include: string / exclude: string


Kümedeki ad alanları


Yeniden planlamayı belirli ad alanlarına daraltır. Tüm Pod'ları işlemek için boş bırakın. include ve exclude birbirini dışlar.


exclude: ["kube-system", "koordinator-system"]


nodeSelector


metav1.LabelSelector


Bkz. Etiketler ve seçiciler


Bir etiket seçici kullanarak yeniden planlamayı belirli düğümlere daraltır. Tek düğüm havuzunu (matchLabels) ve birden çok düğüm havuzunu (matchExpressions) destekler.


matchLabels: {alibabacloud.com/nodepool-id: np****}


podSelectors


list of PodSelector


Bkz. Etiketler ve seçiciler


Etiket seçicileri kullanarak yeniden planlamayı belirli Pod'lara daraltır. Birden çok seçici grubu desteklenir.


matchLabels: {koordinator.sh/qosClass: "LS"}

SSS

Düğüm kullanımı eşiği aşıyor ancak Pod'lar tahliye edilmiyor

En yaygın neden, etkin olmayan bir yeniden planlayıcı yapılandırmasıdır. Sırasıyla kontrol edin:

  1. Kapsam yapılandırılmadı: Yeniden planlayıcı yalnızca açıkça dahil edilen (veya hariç tutulmayan) ad alanlarını ve düğümleri işler. evictableNamespaces ve nodeSelector değerlerini doğrulayın.

  2. Yapılandırma değişikliğinden sonra yeniden planlayıcı yeniden başlatılmadı: Yapılandırma değişiklikleri yeniden başlatma gerektirir. Talimatlar için Adım 2 bölümüne bakın.

  3. Aralık önbellek zaman aşımından uzun: deschedulingInterval (varsayılan: 2 dk) değeri detectorCacheTimeout (varsayılan: 5 dk) değerini aşmamalıdır; aksi takdirde hot spot tespiti başarısız olur. Ayarlayın ve yeniden başlatın.

  4. Düğüm sürekli olarak eşiğin üzerinde değil: Yeniden planlayıcı yumuşatılmış bir ortalama kullanır. Bir düğüm, highThresholds değerini consecutiveAbnormalities ardışık döngü boyunca (varsayılan: 5, ~10 dakika) aştığında hot spot olarak sınıflandırılır. kubectl top node yalnızca son dakikayı yansıtır; sürdürülebilir kullanımı onaylamak için daha uzun bir süre izleyin.

  5. Yetersiz küme kapasitesi: Bir Pod'u tahliye etmeden önce yeniden planlayıcı başka bir düğümün yeterli boş kapasiteye sahip olduğunu doğrular. Hiçbiri yoksa tahliye atlanır. Kapasiteyi artırmak için düğüm ekleyin.

  6. Tek çoğaltmalı iş yükü: Tek çoğaltmalı Pod'lar varsayılan olarak tahliye edilmez. Geçersiz kılmak için Pod'a veya iş yükünün spec.template.metadata bölümüne descheduler.alpha.kubernetes.io/evict: "true" açıklamasını ekleyin. ack-koordinator v1.3.0-ack1.6 ile v1.3.0-ack1.8 arasında desteklenmez. Bu özelliği kullanmak için en son sürüme yükseltin.

  7. Pod HostPath veya emptyDir kullanıyor: Varsayılan olarak yeniden planlamadan hariç tutulur. Tahliyeyi etkinleştirmek için MigrationController'da evictLocalStoragePods: true ayarını yapın. Bkz. Tahliye ve geçiş kontrolü yapılandırması.

  8. Çok sayıda kullanılamayan veya geçen çoğaltma: Kullanılamayan veya geçen çoğaltmalar maxUnavailablePerWorkload veya maxMigratingPerWorkload değerine ulaşırsa, daha fazla tahliye engellenir. Devam eden tahliyeleri bekleyin veya bu sınırları artırın.

  9. Çoğaltma sayısı ≤ geçiş sınırı: Toplam çoğaltma sayısı maxMigratingPerWorkload veya maxUnavailablePerWorkload değerinden küçük veya buna eşitse iş yükü atlanır. Bu değerleri azaltın veya yüzde kullanın.

Yeniden planlayıcı sık sık yeniden başlıyor

Geçersiz veya eksik bir ConfigMap, yeniden başlatma döngülerine neden olur. ConfigMap formatını Gelişmiş yapılandırma bölümüne göre doğrulayın, ardından Adım 2 bölümünde açıklandığı gibi yeniden başlatın.

Yük farkındalıklı zamanlama ve hot spot yeniden planlama birlikte nasıl çalışır?

Optimal yük dengeleme için her iki özelliği de etkinleştirin. Yeniden planlama, aşırı yüklenmiş düğümlerden Pod'ları tahliye eder; yük farkındalıklı zamanlama ise yeniden planlanan Pod'ları daha düşük kullanıma sahip düğümlere yerleştirir.

loadAwareThreshold değerini highThresholds ile eşleşecek şekilde ayarlayın. Bkz. Yük farkındalıklı zamanlamayı kullanma ve Zamanlama ilkeleri.

Yeniden planlayıcı hangi kullanım verilerini kullanır?

Yeniden planlayıcı, birden çok döngü üzerinden yumuşatılmış bir ortalama hesaplar. Tahliye tetiklemesi yalnızca ortalama kullanımın yapılandırılan ardışık döngüler boyunca (varsayılan: ~10 dakika) highThresholds değerinin üzerinde kalması durumunda gerçekleşir.

Yeniden planlayıcı, bellek hesaplamalarında sayfa önbelleğini dışlar (işletim sistemi tarafından geri kazanılabilir). kubectl top node sayfa önbelleğini içerir; gerçek ölçümü görüntülemek için Managed Service for Prometheus kullanın.

Sonraki adımlar