kubernetes - HPA无法在GKE节点自动缩放期间获取CPU指标

标签 kubernetes google-kubernetes-engine

集群信息:

  • 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)
    有关更多详细信息,我将向您显示问题的发生流程:
  • 突然有许多请求到达GKE服务器。 (使用测试工具)
  • HPA检测到当前CPU使用率超过 objective-c PU使用率(50%),因此尝试扩展Pod
    逐步地。
  • 创建Pod时发生
  • Insufficient CPU警告,因此GKE尝试将节点缩放
    逐步地。
  • 很快,HPA无法获取指标以及kubectl top nodekubectl top pod没有得到回应。
    -这时找到了一个或多个OutOfcpu pods ,其中有多个 pods
    ContainerCreating(来自Pending状态)。
  • 完成节点扩展并经过一段时间(大约几分钟)后,
    HPA开始成功获取CPU指标,并尝试根据以下指标进行放大/缩小
    指标。
  • 当节点缩小时,也会发生相同的情况。

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

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

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

    最佳答案

    也许您的节点用尽了一个内存或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
    

    关于kubernetes - HPA无法在GKE节点自动缩放期间获取CPU指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57623694/

    相关文章:

    kubernetes - 如何在GKE中刷新集群访问 token

    multithreading - 如何在 Linux (Kubernetes) 上解决 ASP.NET Core 中的线程不足问题?

    kubernetes - EKS 节点组 Terraform - 为特定节点添加标签

    kubernetes - 如何判断现有集群的类型是地区性集群还是区域性集群?

    GKE 上的 Kubernetes 入口

    google-compute-engine - GitLab CI 构建失败,错误为 : no space left on device.

    kubernetes - 在谷歌云 kubernetes 上调整磁盘大小

    kubernetes - 没有相关部署的Kubernetes Pod的生产用途是什么?

    amazon-web-services - Kubernetes 上的入口资源与 NGINX 入口 Controller

    amazon-web-services - 无法使用 kops 解决方案在同一 AWS VPC 和子网中创建具有 2 个 kubernetes 集群的 ELB