7.2. 配置集群自动扩展
首先,部署集群自动扩展来管理 OpenShift Container Platform 集群中的资源自动扩展。
由于集群自动扩展的范围仅限于整个集群,因此只能为集群创建一个集群自动扩展。
7.2.1. 集群自动扩展资源定义
此 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: <gpu_type> 7 min: 0 8 max: 16 9 logVerbosity: 4 10 scaleDown: 11 enabled: true 12 delayAfterAdd: 10m 13 delayAfterDelete: 5m 14 delayAfterFailure: 30s 15 unneededTime: 5m 16 utilizationThreshold: "0.4" 17
- 1
- 指定 Pod 必须超过哪一优先级才能让机器自动扩展部署更多节点。输入一个 32 位整数值。
podPriorityThreshold
值将与您分配给每个 Pod 的PriorityClass
值进行比较。 - 2
- 指定要部署的最大节点数。这个值是集群中部署的机器总数,而不仅仅是自动扩展器控制的机器。确保这个值足够大,足以满足所有 control plane 和计算机器以及您在
MachineAutoscaler
资源中指定的副本总数。 - 3
- 指定在集群中部署的最小内核数。
- 4
- 指定集群中要部署的最大内核数。
- 5
- 指定集群中最小内存量(以 GiB 为单位)。
- 6
- 指定集群中的最大内存量(以 GiB 为单位)。
- 7
- 可选: 要将集群自动扩展配置为部署启用了 GPU 的节点,请指定代表要使用的 GPU 类型的类型值。
例如,您可以使用
nvidia-t4
代表 Nvidia T4 GPU,或使用nvidia-a10g
代表 A10G GPU。注意type
值必须与管理该类型的 GPU 节点的机器集中的spec.template.spec.metadata.labels[cluster-api/accelerator]
标签的值匹配。因为您可以使用这个值作为机器集上的标签,所以必须包含字母数字字符、-
、_
或.
,且必须以字母数字字符开头和结尾。 - 8
- 指定要在集群中部署的指定类型的最小 GPU 数。
- 9
- 指定集群中要部署的指定类型的最大 GPU 数。
- 10
- 指定
0
到10
之间的日志记录详细程度。为指导提供了以下日志级别阈值:-
1
:(默认)有关更改的基本信息。 -
4
:用于对典型问题进行故障排除的详细程度。 -
9
:广泛的、协议级的故障排除信息。
如果没有指定值,则使用默认值
1
。 -
- 11
- 12
- 指定集群自动扩展是否可以删除不必要的节点。
- 13
- 可选:指定在最近添加节点之后要等待多久才能删除节点。如果不指定值,则使用默认值
10m
。 - 14
- 可选:指定在最近删除节点之后要等待多久才能删除节点。如果没有指定值,则使用默认值
0s
。 - 15
- 可选:指定在发生缩减失败之后要等待多久才能删除节点。如果不指定值,则使用默认值
3m
。 - 16
- 可选:指定不必要的节点有资格删除前的时间。如果不指定值,则使用默认值
10m
。 - 17
- 可选:指定 节点使用率级别。此使用率级别下的节点可以被删除。
节点使用率是请求的资源的总和(由节点分配的资源划分),且值必须大于
"0"
,但小于"1"
。如果没有指定值,集群自动扩展会使用默认值"0.5"
,它对应于 50% 的使用率。您必须以字符串形式表示这个值。
执行扩展操作时,集群自动扩展会保持在 ClusterAutoscaler
资源定义中设置的范围,如要部署的最小和最大内核数,或集群中的内存量。但是,集群自动扩展无法将集群中的当前值修正为在这些范围内。
最小和最大 CPU、内存和 GPU 值是通过计算集群中所有节点上的这些资源来确定,即使集群自动扩展无法管理该节点。例如,control plane 节点在集群的总内存中考虑,即使集群自动扩展不管理 control plane 节点。
7.2.2. 部署集群自动扩展
要部署集群自动扩展,请创建一个 ClusterAutoscaler
资源实例。
流程
-
为包含自定义资源定义的
ClusterAutoscaler
资源创建一个 YAML 文件。 运行以下命令在集群中创建自定义资源:
$ oc create -f <filename>.yaml 1
- 1
<filename>
是自定义资源文件的名称。
后续步骤
- 配置集群自动扩展后,必须至少配置一台机器自动扩展。