为什么我执行cmd 'kubectl get pods',pod状态是'NotReady'?不合理,这个状态属于节点状态

why i execute cmd 'kubectl get pods', the pod status is 'NotReady'? it's unreasonable, this status is belong to node status

参考:https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/

但是 cmd 结果是(pod:two-containers status is NotReady ):

[root@devnet-master ~]# kubectl get pods
NAME                             READY   STATUS     RESTARTS   AGE
busybox-1                        1/1     Running    1          33d
local-volume-provisioner-k49c7   1/1     Running    0          29m
nginx                            2/2     Running    1          21m
two-containers                   1/2     NotReady   0          61m

版本是:

[root@devnet-master ~]# kubectl version
Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.1", GitCommit:"5e58841cce77d4bc13713ad2b91fa0d961e69192", GitTreeState:"clean", BuildDate:"2021-05-12T14:18:45Z", GoVersion:"go1.16.4", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.1", GitCommit:"5e58841cce77d4bc13713ad2b91fa0d961e69192", GitTreeState:"clean", BuildDate:"2021-05-12T14:12:29Z", GoVersion:"go1.16.4", Compiler:"gc", Platform:"linux/amd64"}

describe pod 结果是: exec describe pod result image

应用 yaml 是: apply yaml image

apiVersion: v1
kind: Pod
metadata:
  name: two-containers
spec:
  restartPolicy: Never
  volumes:
  - name: shared-data
    hostPath:      
      path: /data
  containers:
  - name: nginx-container
    image: xxxxxx/nginx:1.0
    volumeMounts:
    - name: shared-data
      mountPath: /usr/share/nginx/html
  - name: debian-container
    image: xxxxxx/debian:stable
    volumeMounts:
    - name: shared-data
      mountPath: /pod-data
    command: ["/bin/sh"]
    args: ["-c", "echo Hello from the debian container > /pod-data/index.html"]

  • Pod 显示为就绪状态,因为根据您的屏幕截图 前提是它是一个多容器 pod。第二个容器 naemd “debian- 容器”处于“完成”状态,因为它只需要执行一个回显 命令。我怀疑您已将 restartPolicy 设置为 Onfailure 或 Never so pod 没有重新启动。但是吊舱内的容器之一在 运行 state 但另一个不是。因此 pod 状态为“NotReady”
  • kubectl get pods中“Ready”栏下的“1/2”也表示 同样,两个容器中只有容器处于就绪状态。