从 "kubectl get pod" 和 "kubectl describe pod" 命令获取不同的 Pod 状态

Getting different Pod status from "kubectl get pod" and "kubectl describe pod" command

我创建了一个有两个容器的 Pod – 一个容器成功创建,而另一个容器失败。

现在,当我执行以下命令时,我看到“Status”为“Error”:

C:\Users\test123>kubectl get pod pod3-two-nginx-containers-port-error
NAME                                   READY   STATUS   RESTARTS   AGE
pod3-two-nginx-containers-port-error   1/2     Error    0          134m

但是当我执行下面的命令时,我看到“状态”是“运行”:

C:\Users\test123>kubectl describe pod pod3-two-nginx-containers-port-error
Name:         pod3-two-nginx-containers-port-error
Namespace:    default
Priority:     0
Node:         minikube/192.168.49.2
Start Time:   Thu, 18 Mar 2021 12:50:19 +0530
Labels:       <none>
Annotations:  <none>
Status:       Running
IP:           10.244.0.9
IPs:

为什么 Kubernetes 显示错误状态?

Kubernetes 没有显示错误的状态。

  • kubectl get pod <<POD_NAME>> 命令中获取 Pod 的状态。
  • kubectl describe pod <<POD_NAME>> 获得 Pod 阶段的 状态。通过 here.
  • 阅读更多关于 Pod 阶段状态的信息

kubectl describe pod 给你的状态是 运行 因为 Pod 已经绑定到一个节点 + 所有容器都已经创建 + 至少一个容器仍然是 运行。同样,您可以阅读我分享的 link。

kubectl get pod 给你的状态是 ERROR,因为 Pod 不处于健康状态。现在我没有 link 你可以在 kubectl get pod 中了解 STATUS 字段的含义,但我可能稍后会找到并分享。

另一种验证方法是通过 运行 kubectl get pods --field-selector=status.phase=Running 命令。如果您在此处列出了 Pod,那么您可以通过另一种方式确定 kubectl describe pod 命令中显示的状态是 Pod 阶段的状态。