GCP f1-micro 实例仅持续几个小时就会被替换

GCP f1-micro 实例仅持续几个小时就会被替换

我有一个 3-6 f1-micro 实例 GKE(k8)集群,该集群受到 f1-micro 实例不断重新创建的困扰。

现在查看集群,它目前扩展到 3 个实例,正常运行时间如下:10 小时、3 小时、1 小时。

为什么我的实例不断变动?如何调试实例不断从实例组添加和删除的“原因”?

这些实例不可抢占。我注意到在 GCP 中,它们在“可用性”部分中设置了自动重启。

任何帮助都非常感谢。

附加信息:

我怀疑看到此问题的原因是尝试在 f1-micro 实例上运行 GKE。我已改用 g-small 实例,它似乎已经更稳定了。

我注意到在 stackdriver 监控概览 (http://app.google.stackdriver.com/) 我在事件框中看到很多“集群 X 中的 gke-my-instance-xzy 尚未就绪”。这是我在日志中第一次找到这样的消息。因此,我得出结论,这些实例在某个层面上报告了不健康的情况,最终被终止。我经常在日志中看到 recreateInstance(或类似的东西)。

我无法确定要查看哪些日志才能找到正确的健康检查。我确实在一组日志中注意到了这一点,--eviction-hard=memory.available<100Mi如果这意味着实例在内存不足 100MB 时会硬关闭,那么我想我遇到了这种情况。我仍然无法在任何日志中看到“健康检查失败”类型的消息。

附加信息:

我已经确认,升级到小型实例后,所有不稳定性都会消失。目前看来,在 f1-micro 实例上运行 GKE 并不是一个好主意。

我没有回答这个问题,因为这是关于我如何调试为什么我的 f1-micro 实例被如此频繁地重新创建,而 Sunny 的回答并没有让我在日志中的任何地方找到“为什么”的消息。

解决方案

从实际意义上讲,迁移到更大的节点大小解决了上述问题。在 OP 评论中,@Daniel 提供了一个页面链接,该页面提供了查看日志所需的命令

gcloud container operations list

我可以在此命令的输出中看到所有终止我的节点的自动修复事件。

答案1

Automatic restart始终是可选的可用性策略,您可以在实例模板用于实例组。设置后,如果虚拟机实例因非用户启动的原因(例如维护事件、硬件故障、软件故障等)而终止,计算引擎将自动重新启动虚拟机实例,因此不太可能由于此策略而​​导致实例在实例组中添加和删除。

如下所述文档,当您的应用程序需要额外的计算资源时,托管实例组可以自动扩展组中的实例数量。

此外,托管实例组可以自动识别并重新创建组中不健康的实例以确保所有实例都以最佳状态运行。

最后;

如果实例组中的某个实例停止、崩溃或被实例组命令以外的操作删除,托管实例组会自动重新创建该实例,以便其可以恢复处理任务。即使实例组引用了不同的实例模板,重新创建的实例也会使用与上一个实例相同的名称和实例模板。

您还可以查看自动缩放器日志,如本公开中所述文档确认自动缩放器是否是此行为背后的原因。

或者

将 Stackdriver 中的“按标签过滤”字段转换为高级过滤器,并定义以下过滤器

resource.type="gce_autoscaler"
protoPayload.methodName="v1.compute.autoscalers.insert"

获取自动缩放器创建的所有实例的列表

resource.type="gce_autoscaler"
protoPayload.methodName="v1.compute.autoscalers.delete"

对于已删除的实例。

相关内容