3.10. 了解如何添加自定义指标自动扩展
要添加自定义指标自动扩展,请为部署、有状态集或自定义资源创建 ScaledObject
自定义资源。为作业创建 ScaledJob
自定义资源。
您只能为每个您要扩展的工作负载创建一个扩展对象。另外,您不能在同一工作负载中使用扩展的对象和 pod 横向自动扩展(HPA)。
3.10.1. 在工作负载中添加自定义指标自动扩展 复制链接链接已复制到粘贴板!
您可以为 Deployment
、StatefulSet
或 custom resource
对象创建的工作负载创建自定义指标自动扩展。
先决条件
- 必须安装 Custom Metrics Autoscaler Operator。
如果您使用自定义指标自动扩展来根据 CPU 或内存进行扩展:
您的集群管理员必须已配置了集群指标。您可以使用
oc describe PodMetrics <pod-name>
命令来判断是否已配置了指标。如果配置了指标,输出将类似以下示例,CPU 和 Memory 在 Usage 下显示。oc describe PodMetrics openshift-kube-scheduler-ip-10-0-135-131.ec2.internal
$ oc describe PodMetrics openshift-kube-scheduler-ip-10-0-135-131.ec2.internal
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 与您要缩放的对象关联的 pod 必须包含指定的内存和 CPU 限值。例如:
pod 规格示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
创建一个类似如下的 YAML 文件:只有名称
<2>
, 对象名称<4>
, 和对象类型<5>
是必需的。缩放对象示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 可选:指定自定义 Metrics Autoscaler Operator 将副本扩展到指定的值和停止自动扩展,如 "Pausing the custom metrics autoscaler for a workload" 部分所述。
- 2
- 指定此自定义指标自动扩展的名称。
- 3
- 可选:指定目标资源的 API 版本。默认为
apps/v1
。 - 4
- 指定要缩放的对象名称。
- 5
- 指定
kind
为Deployment
,StatefulSet
或CustomResource
。 - 6
- 可选:指定目标资源中的容器的名称,其中的自定义自动扩展器获取包含 secret 的环境变量等。默认为
.spec.template.spec.containers[0]
。 - 7
- 可选。指定一个在最后的触发器报告后等待的时间(以秒为单位),在经过这个时间后才会将部署缩减为
0
(如果minReplicaCount
设置为0
)。默认值为300
。 - 8
- 可选:指定扩展时的最大副本数量。默认值为
100
。 - 9
- 可选:指定缩减时的最小副本数量。
- 10
- 可选:指定审计日志的参数。如"配置审计日志记录"部分中所述。
- 11
- 可选:指定在扩展程序无法从源中获取由
failureThreshold
参数定义的次数时回退到的副本数。有关回退行为的更多信息,请参阅 KEDA 文档。 - 12
- 可选:指定检查每个触发器的时间间隔(以秒为单位)。默认值为
30
。 - 13
- 可选:指定是否在删除扩展对象后将目标资源扩展为原始副本数。默认为
false
,这会在删除扩展对象时保留副本数。 - 14
- 可选:指定 pod 横向自动扩展的名称。默认为
keda-hpa-{scaled-object-name}
。 - 15
- 可选:指定一个扩展策略来控制用来扩展或缩减 pod 的速度,如"扩展策略"部分中所述。
- 16
- 指定用作扩展基础的触发器,如"识别自定义指标自动扩展触发器"部分中所述。本例使用 OpenShift Container Platform 监控。
- 17
- 可选:指定触发器身份验证或集群触发器身份验证。如需更多信息,请参阅附加资源部分中的 了解自定义指标自动扩展触发器身份验证。
-
输入
TriggerAuthentication
来使用触发器身份验证。这是默认值。 -
输入
ClusterTriggerAuthentication
来使用集群触发器身份验证。
-
输入
运行以下命令来创建自定义指标自动扩展:
oc create -f <filename>.yaml
$ oc create -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
查看命令输出,以验证是否已创建自定义指标自动扩展:
oc get scaledobject <scaled_object_name>
$ oc get scaledobject <scaled_object_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME SCALETARGETKIND SCALETARGETNAME MIN MAX TRIGGERS AUTHENTICATION READY ACTIVE FALLBACK AGE scaledobject apps/v1.Deployment example-deployment 0 50 prometheus prom-triggerauthentication True True True 17s
NAME SCALETARGETKIND SCALETARGETNAME MIN MAX TRIGGERS AUTHENTICATION READY ACTIVE FALLBACK AGE scaledobject apps/v1.Deployment example-deployment 0 50 prometheus prom-triggerauthentication True True True 17s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意输出中的以下字段:
-
TRIGGERS
:指示正在使用的触发器或缩放器。 -
AUTHENTICATION
:指示所使用的任何触发器身份验证的名称。 READY
:指示扩展对象是否准备好启动缩放:-
如果为
True
,则扩展的对象已就绪。 -
如果
False
,由于您创建的对象中的一个或多个对象有问题,扩展的对象将不可用。
-
如果为
ACTIVE
:指示扩展是否发生:-
如果为
True
,则会进行缩放。 -
如果
False
,则不会发生缩放,因为您创建的一个或多个对象中没有指标或多个问题。
-
如果为
FALLBACK
:指示自定义指标自动扩展是否能够从源获取指标-
如果
False
,自定义指标自动扩展器会获取指标。 -
如果为
True
,自定义指标自动扩展会获取指标,因为您创建的一个或多个对象中没有指标或多个问题。
-
如果
-
3.10.2. 在作业中添加自定义指标自动扩展 复制链接链接已复制到粘贴板!
您可以为任何作业
对象创建自定义指标自动扩展。
使用扩展作业进行扩展只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
先决条件
- 必须安装 Custom Metrics Autoscaler Operator。
流程
创建一个类似以下示例的 YAML 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定作业可以运行的最长持续时间。
- 2
- 指定作业的重试次数。默认值为
6
。 - 3
- 可选:指定作业应并行运行多少个 pod 副本;默认为
1
。-
对于非并行作业,请保留未设置。如果未设置,则默认值为
1
。
-
对于非并行作业,请保留未设置。如果未设置,则默认值为
- 4
- 可选:指定标记作业完成需要成功完成多少个 pod。
-
对于非并行作业,请保留未设置。如果未设置,则默认值为
1
。 - 对于具有固定完成计数的并行作业,请指定完成数。
-
对于带有工作队列的并行作业,请保留 unset。当取消设置默认值时,默认值为
parallelism
参数的值。
-
对于非并行作业,请保留未设置。如果未设置,则默认值为
- 5
- 指定控制器创建的 pod 模板。
- 6
- 可选:指定扩展时的最大副本数量。默认值为
100
。 - 7
- 可选:指定检查每个触发器的时间间隔(以秒为单位)。默认值为
30
。 - 8
- 可选:指定成功完成作业的数量。默认值为
100
。 - 9
- 可选:指定应保留多少个失败作业。默认值为
100
。 - 10
- 可选:指定目标资源中的容器的名称,其中的自定义自动扩展器获取包含 secret 的环境变量等。默认为
.spec.template.spec.containers[0]
。 - 11
- 可选:指定在更新扩展作业时是否被终止现有作业:
-
default
:如果关联的扩展作业被更新,则自动扩展器会终止一个现有作业。自动扩展会使用最新的 specs 重新创建作业。 -
gradual
:如果关联的扩展作业被更新,则自动扩展不会终止现有的作业。自动缩放器使用最新的 specs 创建新作业。
-
- 12
- 可选:指定一个扩展策略:
default
、custom
或accurate
。默认为default
。如需更多信息,请参阅下面的"添加资源"部分中的链接。 - 13
- 指定用作扩展基础的触发器,如"识别自定义指标自动扩展触发器"部分中所述。
- 14
- 可选:指定触发器身份验证或集群触发器身份验证。如需更多信息,请参阅附加资源部分中的 了解自定义指标自动扩展触发器身份验证。
-
输入
TriggerAuthentication
来使用触发器身份验证。这是默认值。 -
输入
ClusterTriggerAuthentication
来使用集群触发器身份验证。
-
输入
运行以下命令来创建自定义指标自动扩展:
oc create -f <filename>.yaml
$ oc create -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
查看命令输出,以验证是否已创建自定义指标自动扩展:
oc get scaledjob <scaled_job_name>
$ oc get scaledjob <scaled_job_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME MAX TRIGGERS AUTHENTICATION READY ACTIVE AGE scaledjob 100 prometheus prom-triggerauthentication True True 8s
NAME MAX TRIGGERS AUTHENTICATION READY ACTIVE AGE scaledjob 100 prometheus prom-triggerauthentication True True 8s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意输出中的以下字段:
-
TRIGGERS
:指示正在使用的触发器或缩放器。 -
AUTHENTICATION
:指示所使用的任何触发器身份验证的名称。 READY
:指示扩展对象是否准备好启动缩放:-
如果为
True
,则扩展的对象已就绪。 -
如果
False
,由于您创建的对象中的一个或多个对象有问题,扩展的对象将不可用。
-
如果为
ACTIVE
:指示扩展是否发生:-
如果为
True
,则会进行缩放。 -
如果
False
,则不会发生缩放,因为您创建的一个或多个对象中没有指标或多个问题。
-
如果为
-