9.18.11. 在虚拟机上启用 descheduler 驱除
您可以使用 descheduler 来驱除 pod,以便可将 pod 重新调度到更合适的节点上。如果 pod 是虚拟机,pod 驱除会导致虚拟机实时迁移到另一节点。
9.18.11.1. Descheduler 配置集 复制链接链接已复制到粘贴板!
使用 descheduler 配置集启用根据 pod 生命周期或节点使用率等标准重新平衡集群的特定驱除策略。
使用 KubeVirtRelieveAndMigrate 或 LongLifecycle 配置集在虚拟机上启用 descheduler。
您不能同时启用了 KubeVirtRelieveAndMigrate 和 LongLifeCycle。
KubeVirtRelieveAndMigrate这个配置集是
LongLifeCycle配置集的一个增强版本。KubeVirtRelieveAndMigrate配置集从高成本节点驱除 pod,以减少整体资源费用并启用工作负载迁移。它还定期重新平衡工作负载,以帮助在节点间维护类似的备用容量,从而更好地处理突然负载激增。节点可能会遇到以下成本:- 资源利用率 :增加资源压力会导致运行应用程序的开销增加。
- 节点维护 :节点上的容器数量更多,会增加资源消耗和维护成本。
该配置集启用了
LowNodeUtilization策略,它带有EvictionsInBackgroundalpha 功能。该配置集还会公开以下自定义字段:-
devActualUtilizationProfile: 启用负载均衡的取消调度。 -
devLowNodeUtilizationThresholds:为LowNodeUtilization策略设置实验性阈值。不要将此字段与devDeviationThresholds搭配使用。 -
devDeviationThresholds:以低量资源使用率为低等资源的节点,以帮助从过度利用的节点重新分发工作负载。不要将此字段与devLowNodeUtilizationThresholds搭配使用。支持的值是:Low(10%:10%),Medium(20%:20%),High(30%:30%),AsymmetricLow(0%:10%),AsymmetricMedium(0%:20%),AsymmetricHigh(0%:30%). -
devEnableSoftTainter:启用软包含组件,以动态应用或删除软污点作为调度提示。
配置示例
apiVersion: operator.openshift.io/v1 kind: KubeDescheduler metadata: name: cluster namespace: openshift-kube-descheduler-operator spec: managementState: Managed deschedulingIntervalSeconds: 30 mode: "Automatic" profiles: - KubeVirtRelieveAndMigrate profileCustomizations: devEnableSoftTainter: true devDeviationThresholds: AsymmetricLow devActualUtilizationProfile: PrometheusCPUCombinedKubeVirtRelieveAndMigrate配置集要求在所有 worker 节点上启用 PSI 指标。您可以通过应用以下MachineConfig自定义资源 (CR) 来启用此项:MachineConfigCR 示例apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: worker name: 99-openshift-machineconfig-worker-psi-karg spec: kernelArguments: - psi=1注意MachineConfig对象的名称非常重要,因为机器配置以字典顺序处理。默认情况下,以98-开头的配置会禁用 PSI。要确保启用了 PSI,请将您的配置命名为具有更高前缀,如99-openshift-machineconfig-worker-psi-karg。您可以将这个配置集与
SoftTopologyAndDuplicates配置集一起使用,以根据软拓扑约束重新平衡 pod,这在托管 control plane 环境中很有用。
LongLifecycle此配置集在节点间平衡资源使用量并启用以下策略:
-
RemovePodsHavingTooManyRestarts:删除其容器重启次数太多的 pod,以及其中所有容器(包括 Init 容器)重启的总数超过 100 的 pod。重启虚拟机客户端操作系统不会增加这个计数。 LowNodeUtilization:在存在没有被充分利用的节点时,将 pod 从过度使用的节点上驱除。被驱除的 pod 的目标节点将由调度程序决定。- 如果节点的用量低于 20%(CPU、内存和 pod 的数量),则该节点将被视为使用率不足。
- 如果节点的用量超过 50%(CPU、内存和 pod 的数量),则该节点将被视为过量使用。
-