25.4. 自动缩放
您可以创建一个 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
另外,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