kubernetes - GKE:Kubernetes Master/kubectl 在节点规模期间无响应
问题描述
给定的是一个集群而不是静态工作负载,它们部署到一个固定大小的节点池(默认)。一个额外的节点池包含弹性工作负载,池大小从 0 到 ~10 个实例变化。在扩展过程中,大多数时候集群没有响应:
- 我无法访问 GKE 上的某些集群页面,例如工作负载(对于德语界面感到抱歉) https://i.stack.imgur.com/MSd3Y.png
- kubectl 无法连接和现有连接,例如端口转发,但也会
get pods -w
断开连接:E0828 12:36:14.495621 10818 portforward.go:233] lost connection to pod
The connection to the server 35.205.157.182 was refused - did you specify the right host or port?
- 另外,我认为依赖诸如 prom-operator 之类的工具会遇到问题,因为一些非常默认的参数(例如
kube_pod_container_info
在此期间缺少数据)
到目前为止,我尝试的是从区域集群切换到区域集群(无单节点主机?),但这并没有帮助。此外,该问题并非在节点池的每个规模上都会出现,但在大多数情况下都会出现。
所以我的问题是 - 如何调试/修复它?
解决方案
这是预期的行为。
创建集群时,根据nodepool
大小选择用于主节点的机器,然后当autoscaler
创建更多nodes
主节点时,主节点的机器类型将更改为能够处理新的节点数量。
在主服务器更新到新机器类型期间,您将失去与 API 的连接并收到报告的消息,而且由于与 API 的通信中断,您无法在云控制台中将任何与集群相关的信息可视化为附图显示。
您可以尽量避免在创建时更改最小节点数,例如,您提到使用的限制是 0 和 10,因此在创建集群时,您可以使用可能支持最大节点数的中间点 5节点,以防工作负载需要它们。
推荐阅读
- mysql - 用于将字段拆分为 5 个不同列的 SQL 计算
- php - 让android studio从网络获取数据并添加到url
- typescript - 打字稿中可空函数变量的正确类型是什么?
- jquery - 如何让第二个内容区域根据第一列中的链接显示不同的信息?
- c++ - 如何在不更改屏幕的情况下调整光标位置?
- rust - Rust“线程'main'在'None'值'调用'Option :: unwrap()'时惊慌失措”
- mongodb - MongoDB 发出 double 类型的读取值
- python - 通过将变量与变量分开来复制变量
- java - Play Framework:操作数堆栈上的错误类型
- javascript - stopDrag 后立即重新开始拖动