搜索

25.4. 自动缩放

download PDF

您可以创建一个 pod 横向自动扩展来指定您要运行的 pod 的最小和最大数量,以及 pod 的目标 CPU 使用率内存使用率

创建横向 pod 自动缩放器后,它将开始尝试查询 Heapster 的指标。Heapster 获取初始指标之前,可能需要过两分钟。

在 Heapster 中提供指标后,pod 横向自动扩展会计算当前指标使用率与所需指标使用率的比率,并相应地扩展或缩减。该扩展会按常规间隔进行,但可能需要一到两分钟时间才能让指标变为 Heapster。

对于复制控制器,这种缩放直接与复制控制器的副本对应。对于部署配置,缩放直接与部署配置的副本计数对应。注意,自动缩放仅应用到 Complete 阶段的最新部署。

OpenShift Container Platform 会自动考虑资源情况,并防止在资源激增期间进行不必要的自动缩放,比如在启动过程中。处于 unready 状态的 pod 在扩展时具有 0 CPU 用量,自动扩展在缩减时会忽略这些 pod。没有已知指标的 Pod 在扩展时具有 0% CPU 用量,在缩减时具有 100% CPU 用量。这在 HPA 决策过程中提供更高的稳定性。要使用这个功能,您必须配置 就绪度检查 来确定新 pod 是否准备就绪。

25.4.1. 为 CPU 使用率自动扩展

为 CPU 使用率自动扩展时,您可以使用 oc autoscale 命令,并指定要在任意给定时间运行的 pod 的最大数量,以及 pod 的目标平均 CPU 使用率。您可以选择指定最小 pod 数量,否则 OpenShift Container Platform 服务器会为 pod 赋予默认值。

例如:

$ oc autoscale dc/frontend --max 10 --cpu-percent=80
deploymentconfig "frontend" autoscaled

example 命令为使用以下定义的现有 DeploymentConfig 创建一个 pod 横向自动扩展:

Pod 横向自动扩展对象定义

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: frontend 1
spec:
  scaleTargetRef:
    apiVersion: apps.openshift.io/v1 2
    kind: DeploymentConfig 3
    name: frontend 4
    subresource: scale
  minReplicas: 1 5
  maxReplicas: 10 6
  targetCPUUtilizationPercentage: 80 7

1
此 pod 横向自动扩展对象的名称。
2
要缩放的对象 API 版本:
  • 对于 ReplicationController,使用 v1
  • 对于 DeploymentConfig,使用 apps.openshift.io/v1
3
要缩放的对象种类,可以是 ReplicationControllerDeploymentConfig
4
您要扩展的现有对象的名称。
5
缩减时的最小副本数量。默认值为 1
6
向上扩展时的最大副本数量。
7
理想状态下每个 pod 应使用的请求 CPU 的百分比。

另外,oc autoscale 命令在使用 pod 横向自动扩展 v2beta1 版本时,会根据定义创建一个 pod 横向自动扩展:

apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: hpa-resource-metrics-cpu 1
spec:
  scaleTargetRef:
    apiVersion: v1 2
    kind: ReplicationController 3
    name: hello-hpa-cpu 4
  minReplicas: 1 5
  maxReplicas: 10 6
  metrics:
  - type: Resource
    resource:
      name: cpu
      targetAverageUtilization: 50 7
1
此 pod 横向自动扩展对象的名称。
2
要缩放的对象 API 版本:
  • 对于 ReplicationController,使用 v1
  • 对于 DeploymentConfig,使用 apps.openshift.io/v1
3
要缩放的对象种类,可以是 ReplicationControllerDeploymentConfig
4
您要扩展的现有对象的名称。
5
缩减时的最小副本数量。默认值为 1
6
向上扩展时的最大副本数量。
7
每个 pod 应使用的请求 CPU 的平均百分比。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.