25.4.2. Autoscaling for Memory Utilization
与基于 CPU 的自动缩放不同,基于内存的自动缩放要求使用 YAML 指定自动扩展,而不是使用 oc autoscale
命令。另外,您可以指定最小 pod 数量和 pod 的目标平均内存使用率,否则这些 pod 会从 OpenShift Container Platform 服务器给出默认值。
根据内存使用率自动缩放是一项技术预览功能。技术预览功能不包括在红帽生产服务级别协议(SLA)中,且其功能可能并不完善。因此,红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
如需红帽技术预览功能支持范围的更多信息,请参阅 https://access.redhat.com/support/offerings/techpreview/。
基于内存的自动缩放仅可通过 v2beta1
版的自动扩展 API 使用。
使用基于内存的自动扩展:
启用基于内存的自动扩展:
将以下内容添加到集群的
master-config.yaml
文件中:... apiServerArguments: runtime-config: - apis/autoscaling/v2beta1=true ...
重启 OpenShift Container Platform 服务:
$ master-restart api $ master-restart controllers
如果需要,获取您要缩放的对象名称:
$ oc get dc NAME REVISION DESIRED CURRENT TRIGGERED BY frontend 1 5 0 config
将以下内容放入一个文件中,如
hpa.yaml
:apiVersion: autoscaling/v2beta1 kind: HorizontalPodAutoscaler metadata: name: hpa-resource-metrics-memory 1 spec: scaleTargetRef: apiVersion: apps.openshift.io/v1 2 kind: DeploymentConfig 3 name: frontend 4 minReplicas: 2 5 maxReplicas: 10 6 metrics: - type: Resource resource: name: memory targetAverageUtilization: 50 7
然后,从以上文件创建自动扩展:
$ oc create -f hpa.yaml
要使基于内存的自动缩放正常工作,内存用量必须与副本数成比例增加和减小。平均而言:
- 增加副本数一定会导致每个 pod 的内存(工作集)用量总体降低。
- 减少副本数一定会导致每个 pod 的内存用量总体增高。
使用 OpenShift Web 控制台检查应用的内存行为,并确保应用程序在使用基于内存的自动扩展前满足这些要求。