5.3. 配置 ClusterAutoscaler

首先,部署 ClusterAutoscaler 来管理 OpenShift Container Platform 集群中的资源自动扩展。

注意

由于 ClusterAutoscaler 作用到整个集群,因此只能为该集群创建一个 ClusterAutoscaler。

5.3.1. ClusterAutoscaler 资源定义

ClusterAutoscaler 资源定义显示 ClusterAutoscaler 的参数和示例值。

apiVersion: "autoscaling.openshift.io/v1"
kind: "ClusterAutoscaler"
metadata:
  name: "default"
spec:
  podPriorityThreshold: -10 1
  resourceLimits:
    maxNodesTotal: 24 2
    cores:
      min: 8 3
      max: 128 4
    memory:
      min: 4 5
      max: 256 6
    gpus:
      - type: nvidia.com/gpu 7
        min: 0 8
        max: 16 9
      - type: amd.com/gpu 10
        min: 0 11
        max: 4 12
  scaleDown: 13
    enabled: true 14
    delayAfterAdd: 10m 15
    delayAfterDelete: 5m 16
    delayAfterFailure: 30s 17
    unneededTime: 60s 18
1
指定 Pod 必须超过哪一优先级才能让 ClusterAutoscaler 部署更多节点。输入一个 32 位整数值。podPriorityThreshold 值将与您分配给每个 Pod 的 PriorityClass 值进行比较。
2
指定要部署的最大节点数。这个值是集群中部署的机器总数,而不仅仅是自动扩展器控制的机器。确保这个值足够大,足以满足所有 control plane 和计算机器以及您在 MachineAutoscaler 资源中指定的副本总数。
3
指定要部署的最小内核数。
4
指定要部署的最大内核数。
5
指定每个节点的最小内存量,以 GiB 为单位。
6
指定每个节点的最大内存量,以 GiB 为单位。
7 10
(可选)指定要部署的 GPU 节点的类型。只有 nvidia.com/gpuamd.com/gpu 是有效的类型。
8 11
指定要部署的最小 GPU 数。
9 12
指定要部署的最大 GPU 数。
13
在此部分中,您可以指定每个操作要等待的时长,可以使用任何有效的 ParseDuration 间隔,包括 nsusmssmh
14
指定 ClusterAutoscaler 能否删除不必要的节点。
15
(可选)指定在最近添加节点之后要等待多久才能删除节点。如果不指定值,则使用默认值 10m
16
指定在最近删除节点之后要等待多久才能删除节点。如果不指定值,则使用默认值 10s
17
指定在发生缩减失败之后要等待多久才能删除节点。如果不指定值,则使用默认值 3m
18
指定要经过多长时间之后,不需要的节点才符合删除条件。如果不指定值,则使用默认值 10m

5.3.2. 部署 ClusterAutoscaler

为了部署 ClusterAutoscaler,需要创建一个 ClusterAutoscaler 资源实例。

流程

  1. ClusterAutoscaler 资源创建一个 YAML 文件,其中包含自定义的资源定义。
  2. 在集群中创建资源:

    $ oc create -f <filename>.yaml 1
    1
    <filename> 是您自定义的资源文件的名称。