$ oc edit kubedeschedulers.operator.openshift.io cluster -n openshift-kube-descheduler-operator
您可以通过安装 Kube Descheduler Operator 并设置所需的配置文件和其他自定义设置来在 OpenShift Container Platform 中运行驱逐程序。
驱逐程序默认情况下不可用。要启用驱逐程序,您必须从 OperatorHub 安装 Kube Descheduler Operator 并启用一个或多个驱逐程序配置文件。
默认情况下,驱逐程序以预测模式运行,这意味着它只模拟 Pod 驱逐。您必须将模式更改为自动模式,才能使驱逐程序执行 Pod 驱逐。
如果您在集群中启用了托管控制平面,请设置自定义优先级阈值以降低托管控制平面命名空间中的 Pod 被驱逐的可能性。将优先级阈值类名称设置为 |
您已以具有 cluster-admin
角色的用户身份登录到 OpenShift Container Platform。
访问 OpenShift Container Platform Web 控制台。
登录到 OpenShift Container Platform Web 控制台。
为 Kube Descheduler Operator 创建所需的命名空间。
导航到**管理** → **命名空间**,然后单击**创建命名空间**。
在**名称**字段中输入openshift-kube-descheduler-operator
,在**标签**字段中输入openshift.io/cluster-monitoring=true
以启用驱逐程序指标,然后单击**创建**。
安装 Kube Descheduler Operator。
导航到**操作符** → **OperatorHub**。
在筛选框中输入**Kube Descheduler Operator**。
选择**Kube Descheduler Operator** 并单击**安装**。
在**安装操作符**页面上,选择**集群上的特定命名空间**。从下拉菜单中选择**openshift-kube-descheduler-operator**。
将**更新通道**和**审批策略**的值调整为所需的值。
单击**安装**。
创建驱逐程序实例。
在**操作符** → **已安装的操作符**页面中,单击**Kube Descheduler Operator**。
选择**Kube Descheduler** 选项卡,然后单击**创建 KubeDescheduler**。
根据需要编辑设置。
要驱逐 Pod 而不是模拟驱逐,请将**模式**字段更改为**自动**。
您可以配置驱逐程序用来驱逐 Pod 的配置文件。
您已以具有 cluster-admin
角色的用户身份登录到 OpenShift Container Platform。
编辑KubeDescheduler
对象
$ oc edit kubedeschedulers.operator.openshift.io cluster -n openshift-kube-descheduler-operator
在spec.profiles
部分中指定一个或多个配置文件。
apiVersion: operator.openshift.io/v1
kind: KubeDescheduler
metadata:
name: cluster
namespace: openshift-kube-descheduler-operator
spec:
deschedulingIntervalSeconds: 3600
logLevel: Normal
managementState: Managed
operatorLogLevel: Normal
mode: Predictive (1)
profileCustomizations:
namespaces: (2)
excluded:
- my-namespace
podLifetime: 48h (3)
thresholdPriorityClassName: my-priority-class-name (4)
evictionLimits:
total: 20 (5)
profiles: (6)
- AffinityAndTaints
- TopologyAndDuplicates
- LifecycleAndUtilization
- EvictPodsWithLocalStorage
- EvictPodsWithPVC
1 | 可选:默认情况下,驱逐程序不会驱逐 Pod。要驱逐 Pod,请将mode 设置为Automatic 。 |
2 | 可选:设置一个用户创建的命名空间列表,用于包含或排除在驱逐程序操作之外。使用excluded 设置要排除的命名空间列表,或使用included 设置要包含的命名空间列表。请注意,受保护的命名空间(openshift-* 、kube-system 、hypershift )默认情况下会被排除。 |
3 | 可选:为LifecycleAndUtilization 配置文件启用自定义 Pod 生命周期值。有效单位为s 、m 或h 。默认 Pod 生命周期为 24 小时。 |
4 | 可选:指定一个优先级阈值,仅当 Pod 的优先级低于指定级别时才考虑将其驱逐。使用thresholdPriority 字段设置数值优先级阈值(例如,10000 ),或使用thresholdPriorityClassName 字段指定某个优先级类名称(例如,my-priority-class-name )。如果指定优先级类名称,则该名称必须已存在,否则驱逐程序将抛出错误。请勿同时设置thresholdPriority 和thresholdPriorityClassName 。 |
5 | 可选:设置每次驱逐程序运行期间要驱逐的 Pod 的最大数量。 |
6 | 添加一个或多个要启用的配置文件。可用的配置文件:AffinityAndTaints 、TopologyAndDuplicates 、LifecycleAndUtilization 、SoftTopologyAndDuplicates 、EvictPodsWithLocalStorage 、EvictPodsWithPVC 、CompactAndScale 和LongLifecycle 。确保您不启用相互冲突的配置文件。 |
您可以启用多个配置文件;配置文件的指定顺序无关紧要。
保存文件以应用更改。
您可以配置驱逐程序运行之间的时间间隔。默认为 3600 秒(一小时)。
您已以具有 cluster-admin
角色的用户身份登录到 OpenShift Container Platform。
编辑KubeDescheduler
对象
$ oc edit kubedeschedulers.operator.openshift.io cluster -n openshift-kube-descheduler-operator
将deschedulingIntervalSeconds
字段更新为所需的值。
apiVersion: operator.openshift.io/v1
kind: KubeDescheduler
metadata:
name: cluster
namespace: openshift-kube-descheduler-operator
spec:
deschedulingIntervalSeconds: 3600 (1)
...
1 | 设置驱逐程序运行之间的时间间隔(秒)。此字段中的值为0 表示驱逐程序运行一次后退出。 |
保存文件以应用更改。