回答问题

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

现在,当我执行以下命令时,我看到“状态”是“错误”:

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 显示错误的状态?

Answers

Kubernetes 没有显示错误的状态。

  • kubectl get pod <<POD_NAME>>命令可以获取 Pod 的状态。

  • kubectl describe pod <<POD_NAME>>获取 Pod 阶段的状态。在此处](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase)阅读有关[上的 Pod 阶段状态的更多信息。

kubectl describe pod为您提供 RUNNING 状态,因为 Pod 已绑定到一个节点 + 所有容器都已创建 + 至少一个容器仍在运行。同样,您可以阅读我共享的链接。

kubectl get pod给你的状态是错误,因为 Pod 不处于健康状态。现在我没有链接,您可以在其中阅读有关kubectl get pod中 STATUS 字段的含义的链接,但我稍后可能会找到并分享。

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

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐