Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

26.6. Autoscaling for Memory Utilization

重要

根据内存使用率自动缩放仅是一项技术预览功能。技术预览功能不包括在红帽生产服务级别协议(SLA)中,且其功能可能并不完善。因此,红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

如需红帽技术预览功能支持范围的更多信息,请参阅 https://access.redhat.com/support/offerings/techpreview/

与基于 CPU 的自动缩放不同,基于内存的自动缩放要求使用 YAML 指定自动扩展,而不是使用 oc autoscale 命令。另外,您可以指定最小 pod 数量和 pod 的目标平均内存使用率,否则这些 pod 会从 OpenShift Container Platform 服务器给出默认值。

  1. 基于内存的自动缩放仅可通过 v2beta1 版的自动扩展 API 使用。通过在集群的 master-config.yaml 文件中添加以下内容来启用基于内存的自动扩展:

    ...
    apiServerArguments:
      runtime-config:
      - apis/autoscaling/v2beta1=true
    ...
  2. 将以下内容放入一个文件中,如 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
    1
    此 pod 横向自动扩展对象的名称
    2
    要缩放的对象 API 版本
    3
    要缩放的对象种类
    4
    要缩放的对象名称
    5
    要缩减的最小副本数
    6
    要扩展的最大副本数
    7
    每个 pod 应使用的请求内存的平均百分比
  3. 然后,从以上文件创建自动扩展:

    $ oc create -f hpa.yaml
重要

要使基于内存的自动缩放正常工作,内存用量必须与副本数成比例增加和减小。平均而言:

  • 增加副本数一定会导致每个 pod 的内存(工作集)用量总体降低。
  • 减少副本数一定会导致每个 pod 的内存用量总体增高。

使用 OpenShift Web 控制台检查应用的内存行为,并确保应用程序在使用基于内存的自动扩展前满足这些要求。