全部產品
Search
文件中心

Container Service for Kubernetes:啟用重調度功能

更新時間:Jul 06, 2024

重調度(Descheduling)通常是指將部署在某個節點上調度不合理的Pod重新調度到另一個節點,適用於叢集資源利用不均衡、節點負載過高或有新的調度策略需求等情境。重調度功能有助於維護叢集健康、最佳化資源使用以及提高工作負載的服務品質。本文以節點汙點校正外掛程式RemovePodsViolatingNodeTaints為例,介紹如何基於ack-koordinator組件開啟重調度功能。

閱讀前提示

  • 使用本文前,建議您已參見重調度概述瞭解重調度的功能介紹、使用情境、工作流程和基本概念。

  • 本文以節點汙點校正外掛程式RemovePodsViolatingNodeTaints為例,請參見Kubernetes官方文檔瞭解汙點和容忍度的工作原理、驅逐效果(例如NoSchedule)等概念。

  • 如果您是社區Kubernetes Descheduler使用者,建議您參見Koordinator Descheduler與Kubernetes Descheduler瞭解Koordinator Descheduler與Kubernetes Descheduler的差異,並完成組件的遷移。

  • 如果您已經瞭解基礎使用方法,需要瞭解系統、模板概要、策略外掛程式、驅逐器外掛程式的進階配置參數以實現更精細化的重調度策略,可直接閱讀進階配置參數

前提條件

注意事項

  • Koordinator Descheduler只負責驅逐正在啟動並執行Pod,並不負責Pod驅逐後的重建以及調度。Pod被驅逐後的重建由其工作負載對應的Controller實現(例如Deployment、Statfulset),重建後Pod的調度流程仍然調度器負責。

  • 重調度在執行過程中會先驅逐舊Pod,再建立新Pod。請確保您的應用有充足的冗餘副本(replicas),避免驅逐時影響應用可用性。

樣本說明

本文以開啟節點汙點校正外掛程式RemovePodsViolatingNodeTaints為例,介紹如何基於ack-koordinator組件開啟重調度功能,並實現重調度策略。

RemovePodsViolatingNodeTaints策略預設檢查並驅逐違反了節點上effectNoSchedule的汙點的Pod。例如,對於一個已經有Pod在啟動並執行節點,當管理員在節點上新增一個汙點deschedule=not-allow:NoSchedule後,若節點上的Pod沒有配置相應的容忍策略,則Pod就會被該重調度策略驅逐。更多資訊,請參見RemovePodsViolatingNodeTaints

RemovePodsViolatingNodeTaints策略支援通過excludedTaints欄位定義哪些節點汙點不在策略的考慮範圍內。如果節點上的任何汙點的鍵(key)或索引值對(key=value)與 excludedTaints 列表中的條目匹配,那麼策略會自動忽略這些汙點。

本樣本將該外掛程式對汙點的檢查配置為:

  • 節點上存在effectNoSchedule的汙點屬性。

  • NoSchedule的汙點屬性中,key不等於deschedule,且value不等於not-allow

在符合以上要求的節點上,如果已經完成調度並運行中的Pod未配置相應的容忍策略,則會被重調度器驅逐。

步驟一:安裝或修改ack-koordinator組件並開啟重調度

您可以參見本小節步驟安裝ack-koordinator組件,使用其提供的Koordinator Descheduler重調度器功能。Koordinator Descheduler會以Deployment的形式部署在節點上。

說明

如果您已安裝ack-koordinator組件,請確保組件版本為v1.2.0-ack.2及以上。

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇營運管理 > 組件管理

  3. 定位ack-koordinator組件,單擊右下角的安裝,在安裝對話方塊上面勾選開啟重調度模組,按頁面提示完成組件的配置和安裝。

步驟二:開啟重調度外掛程式RemovePodsViolatingNodeTaints

  1. 使用如下YAML檔案,建立koord-descheduler-config.yaml。

    koord-descheduler-config.yaml是ConfigMap格式的對象,用於啟用和配置重調度外掛程式RemovePodsViolatingNodeTaints

    # koord-descheduler-config.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: koord-descheduler-config
      namespace: kube-system
    data:
      koord-descheduler-config: |
        # 以下為Koordinator Descheduler系統配置,請保持不變。
        apiVersion: descheduler/v1alpha2
        kind: DeschedulerConfiguration
        leaderElection:
          resourceLock: leases
          resourceName: koord-descheduler
          resourceNamespace: kube-system
        deschedulingInterval: 120s # 執行循環間隔,120s執行一次重調度外掛程式。
        dryRun: false # 全域唯讀模式開關,開啟後Koordinator Descheduler整體不做任何操作。
        # 以上為系統配置。
    
        profiles:
        - name: koord-descheduler
          plugins:
            deschedule:
              enabled:
                - name: RemovePodsViolatingNodeTaints  # 配置開啟節點汙點校正外掛程式。        
    
          pluginConfig:             
          - name: RemovePodsViolatingNodeTaints # 節點汙點校正外掛程式配置。
            args:        
              excludedTaints: 
              - deschedule=not-allow # 忽略包含key為"deschedule"且value為"not-allow"的汙點的節點。
  2. 執行如下命令,部署koord-descheduler-config.yaml,將配置更新到叢集中。

    kubectl apply -f koord-descheduler-config.yaml
  3. 執行如下命令,重啟重調度器模組Koordinator Descheduler

    kubectl -n kube-system scale deploy ack-koord-descheduler --replicas 0
    # 預期輸出
    # deployment.apps/ack-koord-descheduler scaled
    kubectl -n kube-system scale deploy ack-koord-descheduler --replicas 1
    # 預期輸出
    # deployment.apps/ack-koord-descheduler scaled

    通過將ack-koord-descheduler的Deployment副本數量設定為0,然後再設定為1,重調度器模組Koordinator Descheduler將重啟啟動,並在啟動後使用最新配置。

步驟三:驗證重調度能力

下文以擁有3台節點的叢集為例進行說明。

  1. 使用如下YAML檔案,建立stress-demo.yaml。

    stress-demo.yaml中定義了一個應用程式範例。

    展開查看YAML樣本

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: stress-demo
      namespace: default
      labels:
        app: stress-demo
    spec:
      replicas: 3
      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: registry-cn-beijing.ack.aliyuncs.com/acs/stress:v1.0.4
              imagePullPolicy: Always
              name: stress
              resources:
                limits:
                  cpu: '2'
                  memory: 4Gi
                requests:
                  cpu: '2'
                  memory: 4Gi
          restartPolicy: Always
  2. 執行以下命令,部署stress-demo.yaml,建立測試Pod。

    kubectl create -f stress-demo.yaml
  3. 執行如下命令,觀察Pod的狀態,直至開始運行。

    kubectl get pod -o wide

    預期輸出:

    NAME                         READY   STATUS    RESTARTS   AGE    IP              NODE                        NOMINATED NODE   READINESS GATES
    stress-demo-5f6cddf9-9****   1/1     Running   0          10s    192.XX.XX.27   cn-beijing.192.XX.XX.247   <none>           <none>
    stress-demo-5f6cddf9-h****   1/1     Running   0          10s    192.XX.XX.20   cn-beijing.192.XX.XX.249   <none>           <none>
    stress-demo-5f6cddf9-v****   1/1     Running   0          10s    192.XX.XX.32   cn-beijing.192.XX.XX.248   <none>           <none>
  4. 執行如下命令,分別為節點增加汙點key=value:NoSchedule

    • 為節點cn-beijing.192.XX.XX.247增加deschedule=not-allow:NoSchedule汙點。

      kubectl taint nodes cn-beijing.192.XX.XX.247 deschedule=not-allow:NoSchedule

      預期輸出:

      node/cn-beijing.192.XX.XX.247 tainted
    • 為節點cn-beijing.192.XX.XX.248增加deschedule=allow:NoSchedule汙點。

      kubectl taint nodes cn-beijing.192.XX.XX.248 deschedule=allow:NoSchedule

      預期輸出:

      node/cn-beijing.192.XX.XX.248 tainted
  5. 執行如下命令,觀察Pod變化。

    kubectl get pod -o wide -w

    等待重調度器檢查節點汙點,並執行驅逐遷移操作。

    預期輸出:

    NAME                         READY   STATUS              RESTARTS   AGE     IP             NODE                    NOMINATED NODE   READINESS GATES
    stress-demo-5f6cddf9-9****   1/1     Running             0          5m34s   192.XX.XX.27   cn-beijing.192.XX.XX.247   <none>           <none>
    stress-demo-5f6cddf9-h****   1/1     Running             0          5m34s   192.XX.XX.20   cn-beijing.192.XX.XX.249   <none>           <none>
    stress-demo-5f6cddf9-v****   1/1     Running             0          5m34s   192.XX.XX.32   cn-beijing.192.XX.XX.248   <none>           <none>
    stress-demo-5f6cddf9-v****   1/1     Terminating         0          7m58s   192.XX.XX.32   cn-beijing.192.XX.XX.248   <none>           <none>
    stress-demo-5f6cddf9-j****   0/1     ContainerCreating   0          0s      <none>         cn-beijing.192.XX.XX.249   <none>           <none>
    stress-demo-5f6cddf9-j****   1/1     Running             0          2s      192.XX.XX.32   cn-beijing.192.XX.XX.249   <none>           <none>

    預期輸出表明:

    • 增加了deschedule=allow:NoSchedule汙點的節點cn-beijing.192.XX.XX.248上的Podstress-demo-5f6cddf9-v****被驅逐。

    • 增加了deschedule=not-allow:NoSchedule汙點的節點cn-beijing.192.XX.XX.247上的Podstress-demo-5f6cddf9-9****沒有被驅逐。

    • 被驅逐的Podstress-demo-5f6cddf9-v****重新調度到沒有NoSchedule汙點的節點cn-beijing.192.XX.XX.249

  6. 執行如下命令,觀察被驅逐Pod的Event。

    kubectl get event | grep stress-demo-5f6cddf9-v****

    預期輸出:

    3m24s       Normal    Evicting            podmigrationjob/b0fba65f-7fab-4a99-96a9-c71a3798****   Pod "default/stress-demo-5f6cddf9-v****" evicted from node "cn-beijing.192.XX.XX.248" by the reason "RemovePodsViolatingNodeTaints"
    2m51s       Normal    EvictComplete       podmigrationjob/b0fba65f-7fab-4a99-96a9-c71a3798****   Pod "default/stress-demo-5f6cddf9-v****" has been evicted
    3m24s       Normal    Descheduled         pod/stress-demo-5f6cddf9-v****                         Pod evicted from node "cn-beijing.192.XX.XX.248" by the reason "RemovePodsViolatingNodeTaints"
    3m24s       Normal    Killing             pod/stress-demo-5f6cddf9-v****                         Stopping container stress

    預期輸出中顯示了Pod的遷移記錄,此Pod所在節點cn-beijing.192.XX.XX.248沒有容忍汙點deschedule=not-allow,導致該Pod被重調度到其他節點。結果符合預期。

進階配置參數

除了上述標準操作之外,您還可以使用ConfigMap對Koordinator Descheduler進行進階配置。

進階配置參數樣本

下方YAML展示了Koordinator Descheduler的進階配置參數樣本。該配置通過DeschedulerConfigurationAPI修改Koordinator Descheduler的行為,開啟了RemovePodsViolatingNodeTaint節點汙點校正重調度策略,並使用MigrationController作為Pod的驅逐器。

您可結合後續章節的說明,瞭解樣本配置中各欄位的詳細含義。

展開查看YAML樣本

# koord-descheduler-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: koord-descheduler-config
  namespace: kube-system
data:
  koord-descheduler-config: |
    # 以下為Koordinator Descheduler系統配置,請保持不變。
    apiVersion: descheduler/v1alpha2
    kind: DeschedulerConfiguration
    leaderElection:
      resourceLock: leases
      resourceName: koord-descheduler
      resourceNamespace: kube-system
    dryRun: false # 全域唯讀模式開關,開啟後Koordinator Descheduler整體不做任何操作。  
    deschedulingInterval: 120s # 執行循環間隔,120s執行一次重調度外掛程式。
    nodeSelector: # 全域參與重調度的節點。預設對全部節點進行重調度。
      deschedule: allow # 表示只處理含有key為deschedule,value為allow的節點。
    maxNoOfPodsToEvictPerNode: 10 # 全域生效的單節點最大可驅逐Pod數量限制,預設不限制。
    maxNoOfPodsToEvictPerNamespace: 10 # 全域生效的單命名空間最大可驅逐Pod數量限制,預設不限制。
    # 以上為系統配置。

    # 以下為模板列表。
    profiles: 
    - name: koord-descheduler # 模板名稱。
      # 以下為模板概要配置,表示具體啟用的外掛程式。
      plugins: 
        deschedule: # deschedule類型策略。預設全部禁用。
          enabled: # enabled表示開啟的外掛程式。不在enabled中顯式開啟的其他外掛程式會被全部禁用。
            - name: RemovePodsViolatingNodeTaints  # 配置開啟節點汙點校正外掛程式。
        balance: # balance類型策略。預設全部禁用。
          disabled: # disabled表示禁用的外掛程式。
            - name: "*" # *表示全部禁用。
        evict:          
          enabled:
            - name: MigrationController # 驅逐器。預設開啟驅逐遷移控制器。
        filter: 
          enabled:
            - name: MigrationController # 驅逐篩選策略。預設使用驅逐遷移控制器的驅逐篩選策略。
      # 以上為模板概要配置。

      # 以下為外掛程式列表,包括策略外掛程式和驅逐器外掛程式。
      pluginConfig: 
      # 以下為策略外掛程式RemovePodsViolatingNodeTaints的配置。
      - name: RemovePodsViolatingNodeTaints
        args:
          excludedTaints:
          - deschedule=not-allow # 忽略包含key為"deschedule"且value為"not-allow"的汙點的節點
          - reserved # 忽略包含key為"reserved"的汙點的節點
          includePreferNoSchedule: false # 是否考慮effect為PreferNoSchedule的汙點。預設只考慮effect為NoSchedule的汙點。
          namespaces: # 參與重調度的Namespace,include和exclude是互斥的,只能配置其中一種。
            include: # include表示只處理下面配置的Namespace。
              - "namespace1"
              - "namespace2"
            # exclude: # exclude表示需要排除的Namespace。
            #   - "namespace1"
            #   - "namespace2"
          labelSelector: # 參與重調度的Pod。預設全部Pod參與重調度。
            accelerator: nvidia-tesla-p100 # 表示只處理含有key為accelerator,value為nvidia-tesla-p100的標籤的Pod。     
    
      # 以下為驅逐器外掛程式MigrationController的配置。     
      - name: MigrationController # 重調度遷移控制參數。
        args:
          apiVersion: descheduler/v1alpha2
          kind: MigrationControllerArgs  
          evictLocalStoragePods: false # 是否允許配置了HostPath或EmptyDir的Pod參與重調度        
          maxMigratingPerNode: 1 # 每個節點處於遷移狀態的Pod的最大數量。
          maxMigratingPerNamespace: 1  # 每個Namespace處於遷移狀態的Pod的最大數量。
          maxMigratingPerWorkload: 1 # 每個Workload(例如Deployment)中處於遷移狀態的Pod的最大數量。
          maxUnavailablePerWorkload: 2 # 每個Workload(例如Deployment)最大不可用副本數。
          objectLimiters:
            workload: # Workload層級Pod遷移的流量控制。預設為首次驅逐後,5分鐘內最多遷移1個副本。
              duration: 5m
              maxMigrating: 1
          evictionPolicy: Eviction # 底層的Pod驅逐方法。預設為調用Eviction API驅逐。       

系統配置

DeschedulerConfiguration中支援對Koordinator Descheduler全域的系統級行為進行配置。

參數

類型

取值

說明

樣本值

dryRun

boolean

  • true

  • false(預設值)

唯讀模式開關,開啟後將不會發起Pod遷移。

false

deschedulingInterval

time.Duration

>0s

重調度的執行循環。

120s

nodeSelector

結構體

不涉及

限制重調度器生效的節點。重調度策略只會在Node Selector指定的節點中生效。關於Node Selector的更多資訊,請參見Kubernetes labelSelector

nodeSelector:
  deschedule: allow

maxNoOfPodsToEvictPerNode

int

≥0(預設不限制)

限制節點上能夠同時驅逐的Pod的最大數量。在驅逐過程中生效。

10

maxNoOfPodsToEvictPerNamespace

int

≥0(預設不限制)

限制命名空間內能夠同時驅逐的Pod的最大數量。在驅逐過程中生效。

10

模板概要配置

Koordinator Descheduler使用重調度範本管理員重調度策略和Pod驅逐器。在DeschedulerConfigurationprofiles欄位中支援定義一個或多個重調度模板。在每個重調度模板中,重調度策略和Pod驅逐器都以外掛程式的形式進行配置。重調度模板中包含以下三部分。

  • name

    string類型。自訂重調度模板的名稱。

  • plugins

    配置需要啟用或禁用的重調度策略(deschedulebalance)、Pod驅逐外掛程式(evict)以及Pod驅逐前的篩選策略(filter)。支援配置的參數與說明如下所示。

    參數

    類型

    取值

    說明

    樣本值

    deschedule

    結構體,資料結構為:

    type PluginList struct {
        Enabled  []Plugin
        Disabled []Plugin
    }
    
    type Plugin struct {
        Name string
    }

    其中,EnabledDisabled均為Plugin結構體類型的列表,分別表示開啟和禁用外掛程式。

    預設全部禁用。選擇開啟的Deschedule類型的重調度策略。

    plugins:
      deschedule: 
        enabled:
          - name: PodLifeTime 
          - name: RemovePodsViolatingNodeTaints  

    RemovePodsViolatingInterPodAntiAffinity

    驅逐違反Pod間反親和性的Pod。

    RemovePodsViolatingNodeAffinity

    驅逐違反節點親和性的Pod。

    RemovePodsViolatingNodeTaints

    驅逐違反節點汙點的Pod。

    RemovePodsHavingTooManyRestarts

    驅逐重啟次數過多的Pod。

    PodLifeTime

    驅逐超出存活時間限制的Pod。

    RemoveFailedPod

    驅逐狀態為Failed的Pod。

    balance

    結構體,資料結構為:

    type PluginList struct {
        Enabled  []Plugin
        Disabled []Plugin
    }
    
    type Plugin struct {
        Name string
    }

    其中,EnabledDisabled均為Plugin結構體類型的列表,分別表示開啟和禁用外掛程式。

    預設全部禁用。選擇開啟的Balance類型的重調度策略。

    plugins:
      balance: 
        enabled:
          - name: RemoveDuplicates 
          - name: LowNodeLoad

    RemoveDuplicates

    應用副本打散

    LowNodeUtilization

    按節點資源分派率進行熱點打散。

    HighNodeUtilization

    按節點資源分派率進行負載彙總,即在策略允許的情況下將Pods從資源使用率較低的節點調度或遷移到資源使用率較高的節點。

    RemovePodsViolatingTopologySpreadConstraint

    驅逐違反拓撲分布約束的Pod。

    LowNodeLoad

    按節點資源使用率進行熱點打散。

    evict

    結構體,資料結構為:

    type PluginList struct {
        Enabled  []Plugin
        Disabled []Plugin
    }
    
    type Plugin struct {
        Name string
    }

    其中,Enabled和Disabled均為Plugin結構體類型的列表。在Enabled列表中開啟外掛程式,在Disabled中禁用外掛程式。

    • MigrationController

    • DefaultEvictor

    選擇開啟的Pod驅逐器。預設啟用MigrationController

    請勿同時開啟多個evict外掛程式。

    plugins:
      evict: 
        enabled: 
          - name: MigrationController

    filter

    結構體,資料結構為:

    type PluginList struct {
        Enabled  []Plugin
        Disabled []Plugin
    }
    
    type Plugin struct {
        Name string
    }

    其中,Enabled和Disabled均為Plugin結構體類型的列表。在Enabled列表中開啟外掛程式,在Disabled中禁用外掛程式。

    • MigrationController

    • DefaultEvictor

    選擇Pod驅逐前的篩選策略。預設啟用MigrationController

    請勿同時開啟多個filter外掛程式。

    plugins:
      filter: 
        enabled: 
          - name: MigrationController
  • pluginConfig

    配置每個外掛程式的進階參數。以name欄位指定所配置的外掛程式名。關於如何在args欄位配置外掛程式。請參見策略外掛程式配置驅逐器外掛程式配置

策略外掛程式配置

Koordinator Descheduler支援6種Deschedule策略外掛程式和5種Balance策略外掛程式。其中,熱點打散重調度策略外掛程式LowNodeLoad由社區Koordinator提供,請參見使用負載熱點打散重調度瞭解詳細配置;其他重調度策略外掛程式由社區Kubernetes Descheduler提供,如下所示。

策略類型

策略功能

策略配置

Deschedule

驅逐違反Pod間反親和性的Pod

RemovePodsViolatingInterPodAntiAffinity

驅逐違反節點親和性的Pod

RemovePodsViolatingNodeAffinity

驅逐違反節點汙點的Pod

RemovePodsViolatingNodeTaints

驅逐重啟次數過多的Pod

RemovePodsHavingTooManyRestarts

驅逐超出存活時間限制的Pod

PodLifeTime

驅逐狀態為Failed的Pod

RemoveFailedPod

Balance

應用副本打散

RemoveDuplicates

按節點資源分派率進行熱點打散

LowNodeUtilization

按節點資源分派率進行負載彙總

HighNodeUtilization

驅逐違反拓撲分布約束的Pod

RemovePodsViolatingTopologySpreadConstraint

驅逐器外掛程式配置

Koordinator Descheduler支援DefaultEvictorMigrationController兩種驅逐器外掛程式。

MigrationController

MigrationController驅逐器外掛程式的進階配置參數如下所示。

參數

類型

取值

說明

樣本值

evictLocalStoragePods

boolean

  • true

  • false(預設值)

是否允許配置了HostPath或EmptyDir的Pod參與重調度。出於安全性考量,預設不開啟。

false

maxMigratingPerNode

int64

≥0(預設值為2)

每個節點處於遷移狀態的Pod的最大數量。0表示不限制。

2

maxMigratingPerNamespace

int64

≥0(預設不限制)

每個命名空間處於遷移狀態的Pod的最大數量。0表示不限制。

1

maxMigratingPerWorkload

intOrString

≥0(預設值為10%)

每個工作負載(例如Deployment)中處於遷移狀態的Pod的最大數量或百分比。0表示不限制。

若工作負載只有單副本,則不參與重調度。

1或10%

maxUnavailablePerWorkload

intOrString

≥0(預設值為10%),且小於工作負載對應的副本總數

每個工作負載(例如Deployment)最大不可用副本數或百分比。0表示不限制。

1或10%

objectLimiters.workload

結構體,資料格式為:

type MigrationObjectLimiter struct {
    Duration time.Duration `json:"duration,omitempty"`
    MaxMigrating *intstr.IntOrString `json:"maxMigrating,omitempty"`
}
  • Duration的值大於0秒(預設值5m)

  • MaxMigrating的值≥0(預設值為10%)

工作負載層級Pod遷移的流量控制。

  • Duration:時間視窗長度,例如5m表示5分鐘。

  • MaxMigrating:副本數量或百分比,可設定為整數或百分比(預設值取自maxMigratingPerWorkload的值)。

objectLimiters:
  workload:
    duration: 5m
    maxMigrating: 1

表示5分鐘內單個工作負載內最多遷移1個副本。

evictionPolicy

string

目前支援三種模式:

  • Eviction(預設值)

  • Delete

  • Soft

  • Eviction:調用Eviction API,優雅地遷移Pod。

  • Delete:調用Pod的Delete方法,直接刪除Pod。

  • Soft:只對Pod添加Annotation scheduling.koordinator.sh/soft-eviction。您可以根據該Annotation接管Pod後續的驅逐操作。

Eviction

DefaultEvictor

DefaultEvictor外掛程式由社區Kubernetes Descheduler提供,請參見DefaultEvictor瞭解詳細配置。

差異對比

DefaultEvictor與MigrationController在Pod驅逐能力方面的詳細對比如下所示。

對比項

DefaultEvictor

MigrationController

驅逐方法

調用Eviction API驅逐Pod。

支援多種驅逐方法,請參見驅逐器外掛程式配置

驅逐限額

  • 支援限制每個節點處於遷移狀態的Pod的最大數量。

  • 支援限制每個命名空間處於遷移狀態的Pod的最大數量。

  • 支援限制每個節點處於遷移狀態的Pod的最大數量。

  • 支援限制每個命名空間處於遷移狀態的Pod的最大數量。

  • 支援限制每個工作負載中處於遷移狀態的Pod的最大數量。

  • 支援限制每個工作負載中最大不可用副本數或百分比。

驅逐限流

不支援

支援基於時間視窗的流控機制,保證同一工作負載中Pod的遷移不會過於頻繁。

驅逐觀測

支援通過組件日誌觀測Pod驅逐資訊。

  • 支援通過組件日誌觀測Pod驅逐資訊。

  • 支援通過Event觀測重調度的遷移過程,並在詳細資料中查看遷移的具體原因和目前狀態。

相關文檔