实例(Pod)自动扩缩容功能(Horizontal Pod Autoscaler,HPA)可以根据目标实例 CPU 利用率的平均值等指标自动扩展、缩减服务的 Pod 数量。自动扩缩容时,可供在控制台进行设置的触发指标类型包括 CPU 指标、内存、硬盘、网络和 GPU 相关指标。此外,这些指标还可以在您通过 YAML 文件创建和编辑 HPA 时使用,本文将给出配置 YAML 文件示例。
自动伸缩指标
自动伸缩指标详情如下表所示:
说明:
其中
metricName
中的变量本身有单位,即表中所示默认单位,该单位在编写 YAML 文件时可忽略。CPU 指标
指标名称(控制台) | 单位(控制台) | 备注 | type | metricName | 默认单位 |
CPU 使用量 | 核 | Pod 的 CPU 使用量 | Pods | k8s_pod_cpu_core_used | 核 |
CPU 利用率 (占节点) | % | Pod 的 CPU 使用量占节点总量之比 | Pods | k8s_pod_rate_cpu_core_used_node | % |
CPU 利用率 (占 Request) | % | Pod 的 CPU 使用量和 Pod 中容器设置的 Request 值之比 | Pods | k8s_pod_rate_cpu_core_used_request | % |
CPU 利用率 (占 Limit) | % | Pod 的 CPU 使用量和 Pod 中容器设置的 Limit 之和的比例 | Pods | k8s_pod_rate_cpu_core_used_limit | % |
硬盘
指标名称(控制台) | 单位(控制台) | 备注 | type | metricName | 默认单位 |
硬盘写流量 | KB/s | Pod 的硬盘写速率 | Pods | k8s_pod_fs_write_bytes | B/s |
硬盘读流量 | KB/s | Pod 的硬盘读速率 | Pods | k8s_pod_fs_read_bytes | B/s |
硬盘读 IOPS | 次/s | Pod 从硬盘读取数据的 IO 次数 | Pods | k8s_pod_fs_read_times | 次/s |
硬盘写 IOPS | 次/s | Pod 把数据写入硬盘的 IO 次数 | Pods | k8s_pod_fs_write_times | 次/s |
网络
指标名称(控制台) | 单位(控制台) | 备注 | type | metricName | 默认单位 |
网络入带宽 | Mbps | 单 Pod 下所有容器的入方向带宽之和 | Pods | k8s_pod_network_receive_bytes_bw | bps |
网络出带宽 | Mbps | 单 Pod 下所有容器的出方向带宽之和 | Pods | k8s_pod_network_transmit_bytes_bw | bps |
网络入流量 | KB | 单 Pod 下所有容器的入方向流量之和 | Pods | k8s_pod_network_receive_bytes | B |
网络出流量 | KB | 单 Pod 下所有容器的出方向流量之和 | Pods | k8s_pod_network_transmit_bytes | B |
网络入包量 | 个/s | 单 Pod 下所有容器的入方向包数之和 | Pods | k8s_pod_network_receive_packets | 个/s |
网络出包量 | 个/s | 单 Pod 下所有容器的出方向包数之和 | Pods | k8s_pod_network_transmit_packets | 个/s |
内存
指标名称(控制台) | 单位(控制台) | 备注 | type | metricName | 默认单位 |
内存使用量 | MiB | Pod 内存使用量 | Pods | k8s_pod_mem_usage_bytes | B |
内存使用量(不包含 Cache) | MiB | Pod 内存使用,不包含 Cache | Pods | k8s_pod_mem_no_cache_bytes | B |
内存利用率(占节点) | % | Pod 内存使用占 node 的比例 | Pods | k8s_pod_rate_mem_usage_node | % |
内存利用率(占节点,不包含 Cache) | % | Pod 内存使用占 node 的比例,不含 Cache | Pods | k8s_pod_rate_mem_no_cache_node | % |
内存利用率(占 Request) | % | Pod 内存使用占 Request 的比例 | Pods | k8s_pod_rate_mem_usage_request | % |
内存利用率(占 Request,不包含Cache) | % | Pod 内存使用占 Request 的比例,不含 Cache | Pods | k8s_pod_rate_mem_no_cache_request | % |
内存利用率(占 Limit) | % | Pod 内存使用占 Limit 的比例 | Pods | k8s_pod_rate_mem_usage_limit | % |
内存利用率(占 Limit,不包含 Cache) | % | Pod 内存使用占 Limit 的比例,不含 Cache | Pods | k8s_pod_rate_mem_no_cache_limit | % |
GPU
指标名称(控制台) | 单位(控制台) | 备注 | type | metricName | 默认单位 |
GPU 使用量 | CUDA Core | Pod GPU 使用量 | Pods | k8s_pod_gpu_used | CUDA Core |
GPU 申请量 | CUDA Core | Pod GPU 申请量 | Pods | k8s_pod_gpu_request | CUDA Core |
GPU 利用率(占 Request) | % | GPU 使用占 Request 的比例 | Pods | k8s_pod_rate_gpu_used_request | % |
GPU 利用率(占节点) | % | GPU 使用占 node 的比例 | Pods | k8s_pod_rate_gpu_used_node | % |
GPU memory 使用量 | MiB | Pod GPU memory 使用量 | Pods | k8s_pod_gpu_memory_used_bytes | B |
GPU memory 申请量 | MiB | Pod GPU memory 申请量 | Pods | k8s_pod_gpu_memory_request_bytes | B |
GPU memory 利用率(占 Request) | % | GPU memory 使用占 Request 的比例 | Pods | k8s_pod_rate_gpu_memory_used_request | % |
GPU memory 利用率(占节点) | % | GPU memory 使用占 node 的比例 | Pods | k8s_pod_rate_gpu_memory_used_node | % |
通过 YAML 创建和编辑 HPA
您可以通过 YAML 文件创建和编辑 HPA。以下为配置文件的示例,该文件定义了一条名称为 example 的 HPA,CPU 使用量为1时触发 HPA ,实例范围为1 - 2。
注意:
TKE 同样兼容原生的 Resource 类型。
apiVersion: autoscaling/v2beta2kind: HorizontalPodAutoscalermetadata:name: examplenamespace: defaultlabels:qcloud-app: examplespec:minReplicas: 1maxReplicas: 2metrics:- type: Pods # 支持使用 Resourcepods:metric:name: k8s_pod_cpu_core_usedtarget:averageValue: "1"type: AverageValuescaleTargetRef:apiVersion: apps/v1beta2kind: Deploymentname: nginx