3.6. 了解如何添加自定义指标自动扩展
				要添加自定义指标自动扩展,请为部署、有状态集或自定义资源创建 ScaledObject 自定义资源。为作业创建 ScaledJob 自定义资源。
			
您只能为每个您要扩展的工作负载创建一个扩展对象。另外,您不能在同一工作负载中使用扩展的对象和 pod 横向自动扩展(HPA)。
3.6.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
- 可选:指定在出现回退时要使用的副本数。输入以下选项之一或省略该参数:- 
											输入 static,以使用fallback.replicas参数指定的副本数。这是默认值。
- 
											输入 currentReplicas以维护当前副本数。
- 
											如果该数量高于 fallback.replicas参数,则输入currentReplicasIfHigher以维护当前的副本数。如果当前副本数低于fallback.replicas参数,请使用fallback.replicas值。
- 
											如果该数量低于 fallback.replicas参数,输入currentReplicasIfLower以维护当前的副本数。如果当前副本数高于fallback.replicas参数,请使用fallback.replicas值。
 
- 
											输入 
- 13
- 可选:指定检查每个触发器的时间间隔(以秒为单位)。默认值为30。
- 14
- 可选:指定是否在删除扩展对象后将目标资源扩展为原始副本数。默认为false,这会在删除扩展对象时保留副本数。
- 15
- 可选:指定 pod 横向自动扩展的名称。默认为keda-hpa-{scaled-object-name}。
- 16
- 可选:指定一个扩展策略来控制用来扩展或缩减 pod 的速度,如"扩展策略"部分中所述。
- 17
- 指定用作扩展基础的触发器,如"识别自定义指标自动扩展触发器"部分中所述。本例使用 OpenShift Container Platform 监控。
- 18
- 可选:指定触发器身份验证或集群触发器身份验证。如需更多信息,请参阅附加资源部分中的 了解自定义指标自动扩展触发器身份验证。- 
											输入 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.6.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,则不会发生缩放,因为您创建的一个或多个对象中没有指标或多个问题。
 
- 
											如果为 
 
-