gpt4 book ai didi

kubernetes - 如何排查 GKE 上频繁重置 Kubernetes 节点的问题?

转载 作者:行者123 更新时间:2023-12-01 01:46:51 24 4
gpt4 key购买 nike

我在 GKE 中有一个测试集群(它运行我的非必要开发服务)。我正在为集群使用以下 GKE 功能:

  • 抢占式节点(~4x f1-micro)
  • 专用入口节点
  • 节点自动升级
  • 节点自动修复
  • 自动缩放节点池
  • 区域集群
  • 堆栈驱动程序运行状况检查

  • 我这样创建了我的可抢占节点池(在 3 个区域的 3 到 6 个实际节点之间自动扩展):
    gcloud beta container node-pools create default-pool-f1-micro-preemptible \
    --cluster=dev --zone us-west1 --machine-type=f1-micro --disk-size=10 \
    --preemptible --node-labels=preemptible=true --tags=preemptible \
    --enable-autoupgrade --enable-autorepair --enable-autoscaling \
    --num-nodes=1 --min-nodes=0 --max-nodes=2

    大多数情况下,这一切都很好。但是,每天大约 3 到 4 次,我会收到有关在可抢占节点上运行的某些服务停机的健康检查通知。 (正是当节点被回收/重新生成时,我每 24 小时期望一次。但不是 3+ 次。)

    当我收到电子邮件通知时,集群已经恢复,但是在查看 kubectl get nodes 时我可以看到某些抢占式节点上的“年龄”约为 5 分钟,与大约 5 分钟匹配。停电时间。

    我不确定在哪里可以找到正在发生的事情的日志,或者为什么会触发重置(设置不当 resources 设置?意外的抢占式调度?“自动修复”?)我希望这一切都在某个地方的堆栈驱动程序中,但我找不到哪里。 Kubernetes/GKE 日志非常啰嗦,一切都在 INFO 级别(隐藏错误文本,或者错误日志在别处)。

    我必须说,我确实喜欢设置的自我修复特性,但在这种情况下,我希望能够在回收之前检查损坏的 pod/节点。我还希望在不拆除/重建集群的情况下进行故障排除,尤其是为了避免额外成本。

    最佳答案

    我能够通过蛮力过程解决这个问题,在 GKE 中创建几个运行相同工作负载的测试节点池(我没有费心连接入口、DNS 等),并改变提供给 gcloud beta container node-pools create 的选项。 .

    由于我为这些实验付费,所以我没有同时运行它们,尽管这会产生更快的答案。我也确实更喜欢保留 --preemptible 的测试选项,因为这会显着影响成本。

    我的结果确定问题出在 --enable-autorepair参数并删除它已将失败的健康检查减少到可接受的水平(预期用于抢占节点)。

    关于kubernetes - 如何排查 GKE 上频繁重置 Kubernetes 节点的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48044902/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com