【发布时间】:2019-12-28 15:00:47
【问题描述】:
集群信息:
- Kubernetes 版本:1.12.8-gke.10
- 正在使用的云:GKE
- 安装方法:
gcloud - 主机操作系统:(机器类型)n1-standard-1
- CNI 和版本:默认
- CRI 和版本:默认
在节点缩放期间,HPA 无法获取 CPU 指标。
同时kubectl top pod和kubectl 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 使用率高于目标 CPU 使用率 (50%),因此尝试 pod scale up 逐步增加。
-
Insufficient CPU创建 pod 时出现警告,因此 GKE 尝试 node scalie up 逐步增加。 - HPA 很快就无法获取指标,
kubectl top node或kubectl top pod没有得到回应。 - 此时找到一个或多个OutOfcpupod,并且有几个pod处于ContainerCreating(来自Pending状态)。 - 节点扩展完成并经过一段时间(大约几分钟)后, HPA 开始成功获取 CPU 指标并尝试根据 指标。
- 节点缩小时也会出现同样的情况。
这会导致 pod 扩展停止,并在响应客户端请求时引发一些故障。这正常吗?
我认为即使在节点扩展期间,HPA 也应该获取正在运行的 pod 的 CPU 指标(或其他指标),以跟踪目前的最佳 pod 大小。因此,当节点扩展完成后,HPA 会立即(而不是增量)创建必要的 pod。
我可以让我的集群像这样工作吗?
【问题讨论】:
标签: kubernetes google-kubernetes-engine