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