HPA 在 GKE 节点自动扩展期间无法获取 CPU 指标



集群信息:

  • Kubernetes 版本:1.12.8-gke.10
  • 正在使用的云:GKE
  • 安装方式:gcloud
  • 主机操作系统:(计算机类型(n1-标准-1
  • CNI 和版本:默认
  • CRI 和版本:默认

在节点扩展期间,HPA 无法获取 CPU 指标。

同时,kubectl top podkubectl top node输出为:Error from server (ServiceUnavailable): the server is currently unable to handle the request (get pods.metrics.k8s.io)Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes.metrics.k8s.io)

有关更多详细信息,我将向您展示我的问题发生的流程:

  1. 突然间,许多请求到达了 GKE 服务器。(使用测试工具(
  2. HPA 检测到当前 CPU 使用率高于目标 CPU 使用率 (50%(,因此尝试向上扩展 pod 增量。
  3. 创建 Pod 时出现Insufficient CPU警告,因此 GKE 尝试节点扩展 增量。
  4. 很快,HPA就无法获得指标,kubectl top nodekubectl top pod没有得到回应。 - 此时找到一个或多个OutOfcpupod,并且多个 pod 处于
    ContainerCreating状态(从Pending状态(。
  5. 节点纵向扩展完成并经过一段时间(大约几分钟(后, HPA 开始成功获取 CPU 指标,并尝试根据 度量。
  6. 当节点缩减时也会发生相同的情况。

这会导致 Pod 缩放停止,并在响应客户端请求时引发一些失败。这正常吗?

我认为即使在节点扩展期间,HPA 也应该在正在运行的 Pod 上获取 CPU 指标(或其他指标(,以跟踪当前的最佳 Pod 大小。因此,当节点扩展完成后,HPA 会立即(而不是增量(创建必要的 Pod。

我可以让我的集群像这样工作吗?

也许您的节点耗尽了一个内存或 CPU 资源,有一些配置图描述了如何根据集群大小扩展插件。您需要在kube-system命名空间中编辑指标-服务器-配置配置映射:

kubectl edit cm/metrics-server-config -n kube-system

你应该添加

baseCPU
cpuPerNode
baseMemory
memoryPerNode

到保姆配置,在这里你可以找到大量的手册:

堆也遇到了同样的 OOM 问题:太多的 pod 无法处理分配资源中的所有指标,请相应地修改堆的配置映射:

kubectl edit cm/heapster-config -n kube-system

最新更新