【问题标题】:Pods are stuck in Init and Terminating state on single node on GKEPod 在 GKE 上的单个节点上卡在 Init 和 Terminating 状态
【发布时间】:2020-10-28 16:29:27
【问题描述】:

我们有一些 pod 随机卡在 Init 状态。在描述这些 pod 时,我们看到 init 容器正在运行,但未标记为就绪。此外,日志不会显示 init 容器的任何错误。

Init Containers:
  istio-init:
    Container ID:  <id>
    Image:         docker.io/istio/proxy_init:1.0.0
    Image ID:      docker-pullable://istio/proxy_init@sha256:345c40053b53b7cc70d12fb94379e5aa0befd979a99db80833cde671bd1f9fad
    Port:          <none>
    Host Port:     <none>
    Args:
      -p
      15001
      -u
      1337
      -m
      REDIRECT
      -i
      10.16.0.0/14,10.0.0.0/20
      -x

      -b
      4000,
      -d

    State:          Running                          <---
      Started:      Wed, 08 Jul 2020 10:35:52 +0200
    Ready:          False                            <---
    Restart Count:  0
    Environment:    <none>
    Mounts:         <none>

应用容器处于等待状态,原因是 PodInitializing。

Containers:
  app:
    Container ID:
    Port:           4000/TCP
    Host Port:      0/TCP
    State:          Waiting         <---
      Reason:       PodInitializing <---
    Ready:          False           <---

起初我们认为 init 容器有问题,但事实并非如此。后来我们得出结论,所有卡在 Init 状态的 pod 都在同一个节点上。这就解释了这个问题的随机性。

有人对这类问题有什么建议吗?

谢谢,

马尔科

【问题讨论】:

  • 使用kubectl get nodes 检查节点状态并验证 kubelet 服务在该节点上运行良好。这将使您对这个问题有更深入的了解。
  • 刚刚检查了 kubelet 日志,结果发现我们有很多 container istio-init: selfLink was empty, can't make reference 日志。即使对于一些最近删除的 pod。
  • 节点是否显示状态为Ready?我们需要通过查看历史日志来确定由 istio 引起的问题。在这种情况下,任何日志记录工具都可能有所帮助。如果没有,请试用 Datadog 免费试用 14 天。
  • 是的。该节点的状态为就绪。
  • 请提供更多细节。您使用的是什么版本的 GKE。它在 GKE 上的 Istio 插件还是您单独部署了它(在这种情况下是什么 Istio 版本)?请指定您在 GKE 集群中使用的机器类型。

标签: kubernetes google-kubernetes-engine istio


【解决方案1】:

如果您的 initContainer 正在运行并且您的常规容器处于“等待”状态,则意味着 initContainer 没有退出。从这个角度来看,这是有道理的,因为 initContainers 应该是 exit/complete 并允许常规容器随后启动。您应该会看到如下内容:

Init Containers:
  istio-init:
    Container ID:  docker://bef731eae1eb3b6c9d926cacb497bb39a7d9796db49cd14a63014fc1a177d95b
    Image:         docker.io/istio/proxy_init:1.0.2
    Image ID:      docker-pullable://docker.io/istio/proxy_init@sha256:e16a0746f46cd45a9f63c27b9e09daff5432e33a2d80c8cc0956d7d63e2f9185
    .....
    State:          Terminated
      Reason:       Completed
    .....
    Ready:          True

所以看起来docker.io/istio/proxy_init:1.0.0 在你的情况下没有退出。我会检查日志:

kubectl logs <pod-name> -c istio-init

可能是您在该节点中遇到了一些独特的问题。也许您的网络无法正常工作(?),也许您的网络覆盖过程有问题(?),您的Istio control plane 中的所有组件都已启动并运行(?)等等。

看起来proxy_init 容器运行istio-iptables 脚本。如果您想查明确切的问题,也可以尝试更改该容器/脚本以获取更多调试信息。

【讨论】:

  • 嘿,Rico,经过更多调查,我们得出的结论是,这个问题仅出现在 9 个节点中的一个节点上。我们已通过添加一个新节点、排空损坏的节点然后将其删除来解决此问题.感谢您的帮助!
猜你喜欢
  • 2016-05-28
  • 2021-04-25
  • 2020-03-31
  • 2022-11-02
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 2018-10-09
相关资源
最近更新 更多