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 使用。

使用基于内存的自动扩展:

  1. 启用基于内存的自动扩展:

    1. 将以下内容添加到集群的 master-config.yaml 文件中:

      ...
      apiServerArguments:
        runtime-config:
        - apis/autoscaling/v2beta1=true
      ...
    2. 重启 OpenShift Container Platform 服务:

      $ master-restart api
      $ master-restart controllers
  2. 如果需要,获取您要缩放的对象名称:

    $ oc get dc
    
    NAME                  REVISION   DESIRED   CURRENT   TRIGGERED BY
    frontend              1          5         0         config
  3. 将以下内容放入一个文件中,如 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
    1
    此 pod 横向自动扩展对象的名称。
    2
    要缩放的对象 API 版本:
    • 对于 ReplicationController,使用 v1
    • 对于 DeploymentConfig,使用 apps.openshift.io/v1
    3
    要缩放的对象种类,可以是 ReplicationControllerDeploymentConfig
    4
    您要扩展的现有对象的名称。
    5
    缩减时的最小副本数量。默认值为 1
    6
    向上扩展时的最大副本数量。
    7
    每个 pod 应使用的所请求内存的平均百分比。
  4. 然后,从以上文件创建自动扩展:

    $ oc create -f hpa.yaml
重要

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

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

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.