Pod 陷入“待处理”状态,没有记录任何事件

Mor*_*lst 6 kubernetes google-cloud-platform google-kubernetes-engine

我不知道在哪里寻找提示。

我们已经在开发集群中使用 Helm Chart安装了 gitlab-runners。大多数情况下,这是有效的,但在过去一周左右的时间里,我们经历了 Pod 陷入状态Pending而没有任何进一步日志的情况。在某个我无法更好定义的时刻,所有 Pod 都被调度到节点上,然后下一批再次陷入困境Pending

我们使用 GKE,并为 gitlab-runner pod 设置了一个可抢占节点的节点池。我们运行 kubernetes v1.15.4-gke.18

我们知道 Pod 被卡住的原因有多种Pending,但我总是期望在运行kubectl describe <GITLAB_RUNNER_POD>kubectl get events. 问题是,没有。没有事件。

我们启用了 stackdriver 日志记录,我可以Kubernetes Apiservice Requests在下面看到日志Kubernetes Cluster,但它们对我来说没有任何有意义的内容。

有什么想法去哪里看吗?

小智 1

发布此答案是为了提供更多一般概念,了解在哪里查找信息为什么Pod处于Pending状态,目前无法判断此特定设置。

Pod检查为什么可以处于状态的方法Pending

  • $ kubectl describe pod POD_NAME
  • $ kubectl get events -A
  • 检查Cloud Logging(更多内容见下文)

假设处于以下状态的Pod情况Pending

  • $ kubectl get pods
NAME                           READY   STATUS    RESTARTS   AGE
nginx-four-99d88fccb-rwzmp     0/1     Pending   0          2s
nginx-one-8584c66446-h92rm     1/1     Running   0          5d22h
nginx-three-5bcb988986-tmshp   1/1     Running   0          5d22h
nginx-two-6c9545d7d4-2zlmh     1/1     Running   0          5d22h
Run Code Online (Sandbox Code Playgroud)

要获取有关其状态的更多信息,您可以运行:

  • $ kubectl describe pod POD_NAME

Event上面输出的部分:

Events:
  Type     Reason            Age                 From               Message
  ----     ------            ----                ----               -------
  Warning  FailedScheduling  26s (x2 over 114s)  default-scheduler  0/1 nodes are available: 1 Insufficient cpu.
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,有关于为什么Pod处于Pending状态 ( Insufficient CPU) 的信息。

您还可以运行:

  • $ kubectl get events
Events:
  Type     Reason            Age                 From               Message
  ----     ------            ----                ----               -------
  Warning  FailedScheduling  26s (x2 over 114s)  default-scheduler  0/1 nodes are available: 1 Insufficient cpu.
Run Code Online (Sandbox Code Playgroud)

免责声明!

Kubernetes 事件存储在etcd1 小时内。如果状态消息Pod在一段时间内没有重复,它将在 1 小时后删除。关于此特定主题的其他参考:


从以下位置检索日志Cloud Logging

您可以运行以下查询来获取Pods处于Pending状态的:

LAST SEEN   TYPE      REASON              OBJECT                            MESSAGE
20s         Warning   FailedScheduling    pod/nginx-four-99d88fccb-rwzmp    0/1 nodes are available: 1 Insufficient cpu.
14m         Normal    SuccessfulCreate    replicaset/nginx-four-99d88fccb   Created pod: nginx-four-99d88fccb-rwzmp
14m         Normal    ScalingReplicaSet   deployment/nginx-four             Scaled up replica set nginx-four-99d88fccb to 1
Run Code Online (Sandbox Code Playgroud)

此查询不会显示处于状态Insufficient CPU的原因(如 )。为此,Issuetracker.google.com上有一个功能请求。您可以关注它以接收进一步的更新:PodPending


其他资源: