关于GKE集群预留实例的疑问及ZONE_RESOURCE_POOL_EXHAUSTED问题的解决方案求助
最近我们的GKE环境被暂停了,账号恢复后Kubernetes无法正常工作——3台服务器里只有1台可用,另外两个区域持续30分钟报ZONE_RESOURCE_POOL_EXHAUSTED错误,直到我们手动添加新节点池才恢复。
谷歌告诉我们这种情况是正常的,建议我们使用预留实例。但我对此存疑:账号被暂停时预留实例肯定也会被终止,它真的能解决这次的问题吗?我很难相信创建GKE集群必须依赖预留实例。
我真正在意的不是服务器宕机的原因,而是GKE居然无法自动恢复,必须手动干预。如果预留实例是刚需,我也希望GCP控制台能自动完成配置。所以来请教Server Fault的专家们:
- 我是不是应该在创建Kubernetes集群后,单独配置预留实例?
- 预留实例能解决服务器崩溃、系统更新这类常规场景下的机器不可用问题吗?
- 谷歌说“使用预留实例后,95%的VM能在120秒内启动”,这听上去根本不是真正的“预留”。这些实例是真的被预留了吗?还是说有5%的概率GKE无法自行恢复?
- 是不是所有VM实例(不只是GKE的)都需要同时配置“实例组”和“预留实例”?
- 有没有其他解决方案?
我真的不想把集群迁回AWS,GKE的功能实在太丰富了,但目前我对GKE的信心不足,非常感谢各位的反馈。
编辑于2024年2月17日
我觉得之前的问题描述可能不够清晰,所以简化一下:谷歌建议我用预留实例来避免
ZONE_RESOURCE_POOL_EXHAUSTED错误。在我看来,预留实例应该能确保VM启停的确定性,但谷歌说的是95%的概率能在2分钟内拿到机器,这和我理解的“预留”不太一样。如果我没有主动停止实例——比如出现机器硬件故障,或者谷歌侧的VM恢复故障——预留实例能解决
ZONE_RESOURCE_POOL_EXHAUSTED问题吗?
编辑于2024年3月27日
和谷歌技术支持沟通了2个月,问题还升级了3次,但最终还是没解决。谷歌支持表示,对于单区域GKE集群的
ZONE_RESOURCE_POOL_EXHAUSTED问题,除了用预留实例之外没有其他解决方案。但他们只能确认我们有95%的概率能拿到实例(无SLA保障),甚至无法确认如果有可用实例时我们是否有优先获取权。我觉得谷歌支持在这个案例上已经很努力了,还为第一次沟通时的准备不足道了歉,整体服务我是满意的。只是最初的支持只会照搬公开文档,而升级后的回复完全没用,这点让我很失望。
备注:内容来源于stack exchange,提问作者Luke

