【问题标题】:How to debug a kubernetes pod whose status is error如何调试状态为错误的 Kubernetes pod
【发布时间】:2021-07-24 07:44:58
【问题描述】:

我正在构建我的 docker 映像,然后使用 kubernetes 进行部署。

当我执行以下命令时:

kubectl get pods 

NAME                          READY   STATUS    RESTARTS   AGE
lmhfhfhf-def-abc            0/1     Error   0          2m

我几乎可以肯定,这是因为我的代码更改。 如何调试此 pod 以找出我的代码中的逻辑错误。请帮助。

【问题讨论】:

  • 最简单的方法是检查 Pod 的日志和描述。你能发布 kubectl logs pod-name、kubectl logs pod-name --previous 和 kubectl describe pod pod-name 的结果吗?

标签: linux docker kubernetes containers kubernetes-pod


【解决方案1】:

您应该检查以下事项

  1. 使用 "kubectl describe" 检查 Pod 事件

kubectl 描述 pod 名称

  1. 使用检查 pod 相关日志

kubectl 记录 pod 名称

  1. 检查 Kubernetes 集群的所有事件

kubectl 获取事件

【讨论】:

  • 也许你可以在命令的输出中添加更多关于关注什么的细节
【解决方案2】:

欢迎来到社区@witti_minds

@user2830517 和@andD 已经普遍回答了这个问题,但是我想添加更多细节和来源。

您的 pod 已崩溃,但是由于已安排好,用于运行 pod 的选项将起作用 (k8s debug unhealthy pods)

首先,您应该通过运行以下命令获取有关您的 pod 的所有信息,这将为您提供有关您的 pod 的所有信息 (k8s pod inspection):

kubectl describe pod %pod_name%

那么你应该做的是使用以下命令检查 POD 的日志:

kubectl logs lmhfhfhf-def-abc %container_name%

容器名称在这里是可选的,如果你的 pod 有超过 1 个容器,你必须使用它。 您还可以检查 pod 先前状态的日志:

kubectl logs --previous %pod_name% %container_name%

一旦您的容器启动并运行,您可以通过使用exec 命令直接在 pod 中运行命令来继续对应用程序进行故障排除:

kubectl exec -it %pod_name% -- sh

可能的故障排除方法有很多种,这里都有介绍k8s debugging a running pod

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    相关资源
    最近更新 更多