【问题标题】:Kubernetes pods failing on "Pod sandbox changed, it will be killed and re-created"Kubernetes pod 因“Pod 沙箱已更改,将被杀死并重新创建”而失败
【发布时间】:2018-03-31 06:30:44
【问题描述】:

在 Google Container Engine 集群 (GKE) 上,有时我看到一个 pod(或更多)没有启动并查看其事件,我可以看到以下内容

Pod 沙箱已更改,它将被杀死并重新创建。

如果我等待 - 它只会不断重试。
如果我删除 pod,并允许部署的副本集重新创建它们,它将正常启动。

行为不一致。

Kubernetes 版本 1.7.6 和 1.7.8

有什么想法吗?

【问题讨论】:

  • 我也看到了这个,它大约每秒记录一次这些错误数千次。
  • 是的 - 这就是我所看到的。有来自@googlecloud 的人可以在这里发表评论吗?

标签: kubernetes google-cloud-platform google-kubernetes-engine


【解决方案1】:

我可以在Google Cloud Status Dashboard看到以下消息:

“我们正在调查一个影响 Google Container Engine (GKE) 集群的问题,即在 docker 崩溃或在节点上重新启动后,无法调度 pod。

据信该问题会影响所有运行 Kubernetes v1.6.11、v1.7.8 和 v1.8.1 的 GKE 集群。

我们的工程团队建议:如果节点的版本为 v1.6.11,请将您的节点降级到 v1.6.10。如果节点的版本为 v1.7.8,请将您的节点降级到 v1.7.6。如果节点在 v1.8.1 上,请将您的节点降级到 v1.7.6。

工程团队还在this doc 中提供了替代解决方法。这些变通方法适用于无法降级其节点的客户。”

【讨论】:

  • 有趣。不错的收获,虽然我在 1.7.6 也有这个。我将尝试其中一种解决方法并进行更新!
  • 当前状态 - 我尝试了 Google 的一种解决方法。它没有帮助。我将集群节点降级到 1.7.6(我已经遇到了问题)。似乎更好,但仍不确定。
  • 不走运。仍然收到这些错误。 Google 正在推出一个修复程序,所以我希望这会有所帮助。
  • Eldad AK,如果您降级到 1.7.6 并且仍然看到问题,则可能与事件无关。您应该检查事件和/或 kubelet 日志以查看启动/运行 PodSandbox 是否有任何错误。
  • 最新更新 - 将集群升级到 1.8.1-gke.1 似乎已经解决了这些问题(目前)。它已经运行了几天,没有出现与我的原始帖子相关的错误。
【解决方案2】:

我在 GKE 1.8.1 集群中的一个节点上受到相同问题的影响(其他节点都很好)。我做了以下操作:

  1. 确保您的节点池有一些空间来接收在受影响节点上安排的所有 pod。如有疑问,请将节点池增加 1。
  2. this manual之后排空受影响的节点:

    kubectl drain <node>
    

    您可能会遇到有关具有本地存储的守护程序集或 pod 的警告,请继续操作。

  3. 关闭 Compute Engine 中受影响的节点。如果您的池大小小于池描述中指定的大小,GKE 应安排替换节点。

【讨论】:

  • 这对于坏节点来说是一个很好的解决方案,但我的问题似乎发生在不止一个节点上。而且他们并不总是在同一时间,所以感觉就像一场幽灵狩猎。
  • 当然,具有多个问题节点的大型集群将需要使用此解决方案进行过多的手动工作。我希望这个答案对碰巧找到这个线程的小集群的人有所帮助。
【解决方案3】:

在我的情况下,这是因为内存和 CPU 限制太少

【讨论】:

  • 就我而言。增加内存和 cpu 为我修复了它。错误怎么会如此模糊?我因此失去了几个小时。
  • 这太荒谬了。对我来说,这是因为我输入了memory: 300m 而不是memory: 300Mi
猜你喜欢
  • 2018-08-31
  • 2018-03-04
  • 1970-01-01
  • 1970-01-01
  • 2018-07-04
  • 2021-02-18
  • 1970-01-01
  • 1970-01-01
  • 2019-11-30
相关资源
最近更新 更多