首页 > 解决方案 > kubectl get pods 返回不一致的结果

问题描述

当我执行时kubectl get pods,我会为同一个 pod 获得不同的输出。

例如:

$ kubectl get pods -n ha-rabbitmq
NAME            READY   STATUS    RESTARTS   AGE
rabbitmq-ha-0   1/1     Running   0          85m
rabbitmq-ha-1   1/1     Running   9          84m
rabbitmq-ha-2   1/1     Running   0          50m

之后我执行相同的命令,这是不同的结果:

$ kubectl get pods -n ha-rabbitmq
NAME            READY   STATUS             RESTARTS   AGE
rabbitmq-ha-0   0/1     CrashLoopBackOff   19         85m
rabbitmq-ha-1   1/1     Running            9          85m
rabbitmq-ha-2   1/1     Running            0          51m

我有 2 个主节点和 5 个使用 kubeadm 初始化的工作节点。每个主节点都有一个运行在其上的内置 etcd pod 实例。

结果kubectl get nodes

$ kubectl get nodes -owide
NAME              STATUS   ROLES    AGE     VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
k8s-meb-master1   Ready    master   14d     v1.14.3   10.30.29.11    <none>        Ubuntu 18.04.2 LTS   4.15.0-51-generic   docker://18.9.5
k8s-meb-master2   Ready    master   14d     v1.14.3   10.30.29.12    <none>        Ubuntu 18.04.2 LTS   4.15.0-51-generic   docker://18.9.6
k8s-meb-worker1   Ready    <none>   14d     v1.14.3   10.30.29.13    <none>        Ubuntu 18.04.2 LTS   4.15.0-51-generic   docker://18.9.5
k8s-meb-worker2   Ready    <none>   14d     v1.14.3   10.30.29.14    <none>        Ubuntu 18.04.2 LTS   4.15.0-51-generic   docker://18.9.5
k8s-meb-worker3   Ready    <none>   14d     v1.14.3   10.30.29.15    <none>        Ubuntu 18.04.2 LTS   4.15.0-51-generic   docker://18.9.5
k8s-meb-worker4   Ready    <none>   14d     v1.14.2   10.30.29.16    <none>        Ubuntu 18.04.2 LTS   4.15.0-51-generic   docker://18.9.5
k8s-meb-worker5   Ready    <none>   5d19h   v1.14.2   10.30.29.151   <none>        Ubuntu 18.04 LTS     4.15.0-20-generic   docker://18.9.5

/var/lib/etcd/这个问题是否与主节点中的不同步内容有关?

标签: kuberneteskubectl

解决方案


您的 pod 处于CrashLoopBackoff状态。这意味着 pod 内的一些容器正在退出(主进程退出),并且 pod 会一遍又一遍地重新启动。

根据您运行get po命令的时间,您可能会看到您的 pod 为Running(进程尚未退出)或CrashLoopBackoff(kubernetes 在重新启动您的 pod 之前正在等待。

Restarts您可以通过查看输出中的计数器来确认这种情况。

我建议您查看重新启动的 pod 日志,以了解它们失败的原因。


推荐阅读