HPA无法在GKE节点自动缩放过程中获得CPU指标

时间:2019-08-23 09:45:28

标签: 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)

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

  1. 突然有许多请求到达GKE服务器。 (使用测试工具)
  2. HPA检测到当前CPU使用率超过目标CPU使用率(50%),因此尝试扩展Pod
  3. 创建吊舱时出现
  4. Insufficient CPU警告,因此GKE尝试将节点放大
  5. HPA很快无法获取指标,并且kubectl top nodekubectl top pod 没有得到回应。     -目前找到一个或多个OutOfcpu吊舱,并且其中有多个吊舱
          ContainerCreating(来自Pending状态)。
  6. 节点放大完成并且已经过了一段时间(大约几分钟)之后, HPA开始成功获取CPU指标,并尝试根据以下指标进行放大/缩小 指标。
  7. 节点缩小时也会发生同样的情况。

这会导致吊舱缩放停止,并在响应客户的请求时引发一些故障。这正常吗?

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

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

1 个答案:

答案 0 :(得分:0)

也许您的节点用尽了一个资源(无论是内存还是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