首页 > 解决方案 > GKE:Kubernetes Master/kubectl 在节点规模期间无响应

问题描述

给定的是一个集群而不是静态工作负载,它们部署到一个固定大小的节点池(默认)。一个额外的节点池包含弹性工作负载,池大小从 0 到 ~10 个实例变化。在扩展过程中,大多数时候集群没有响应:

  1. 我无法访问 GKE 上的某些集群页面,例如工作负载(对于德语界面感到抱歉) https://i.stack.imgur.com/MSd3Y.png
  2. kubectl 无法连接和现有连接,例如端口转发,但也会get pods -w断开连接:
    1. E0828 12:36:14.495621 10818 portforward.go:233] lost connection to pod
    2. The connection to the server 35.205.157.182 was refused - did you specify the right host or port?
  3. 另外,我认为依赖诸如 prom-operator 之类的工具会遇到问题,因为一些非常默认的参数(例如kube_pod_container_info在此期间缺少数据)

到目前为止,我尝试的是从区域集群切换到区域集群(无单节点主机?),但这并没有帮助。此外,该问题并非在节点池的每个规模上都会出现,但在大多数情况下都会出现。

所以我的问题是 - 如何调试/修复它?

标签: kubernetesgoogle-kubernetes-engine

解决方案


这是预期的行为。

创建集群时,根据nodepool大小选择用于主节点的机器,然后当autoscaler创建更多nodes主节点时,主节点的机器类型将更改为能够处理新的节点数量。

在主服务器更新到新机器类型期间,您将失去与 API 的连接并收到报告的消息,而且由于与 API 的通信中断,您无法在云控制台中将任何与集群相关的信息可视化为附图显示。

您可以尽量避免在创建时更改最小节点数,例如,您提到使用的限制是 0 和 10,因此在创建集群时,您可以使用可能支持最大节点数的中间点 5节点,以防工作负载需要它们。


推荐阅读