【问题标题】:HPA could not get CPU metric during GKE node auto-scalingHPA 在 GKE 节点自动缩放期间无法获取 CPU 指标
【发布时间】:2019-12-28 15:00:47
【问题描述】:

集群信息:

  • Kubernetes 版本:1.12.8-gke.10
  • 正在使用的云:GKE
  • 安装方法:gcloud
  • 主机操作系统:(机器类型)n1-standard-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 scale up 逐步增加。
  3. Insufficient CPU 创建 pod 时出现警告,因此 GKE 尝试 node scalie up 逐步增加。
  4. HPA 很快就无法获取指标,kubectl top nodekubectl top pod 没有得到回应。 - 此时找到一个或多个OutOfcpu pod,并且有几个pod处于
    ContainerCreating(来自Pending状态)。
  5. 节点扩展完成并经过一段时间(大约几分钟)后, HPA 开始成功获取 CPU 指标并尝试根据 指标。
  6. 节点缩小时也会出现同样的情况。

这会导致 pod 扩展停止,并在响应客户端请求时引发一些故障。这正常吗?

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

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

【问题讨论】:

    标签: kubernetes google-kubernetes-engine


    【解决方案1】:

    也许您的节点耗尽了内存或 cpu 的一种资源,有一些配置映射描述了如何根据集群大小扩展插件。您需要在 kube-system 命名空间中编辑 metrics-server-config 配置映射:

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

    你应该添加

    baseCPU
    cpuPerNode
    baseMemory
    memoryPerNode
    

    到 NannyConfiguration,here 你可以找到大量的手册:

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

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

    【讨论】:

    • 我以前从未见过这个,所以它可能是有用的建议。我会看看这些配置图。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-10-24
    • 2020-04-27
    • 2021-10-20
    • 2019-08-16
    • 2021-06-23
    • 2023-02-15
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多