运行kubectl get pod-w时,kubernetes pod restart count显示不一致的值

运行kubectl get pod-w时,kubernetes pod restart count显示不一致的值,kubernetes,Kubernetes,我一直在玩minikube,经过一系列操作后,kubectl get pod-w的输出如下- nginx 1/1 Running 2 10m nginx 1/1 Running 3 10m nginx 0/1 Completed 2 10m nginx 0/1 CrashLoopBackOff 2 11m nginx 1/1 Running 3 11m nginx 1/1 Running

我一直在玩minikube,经过一系列操作后,
kubectl get pod-w
的输出如下-


nginx   1/1   Running   2     10m
nginx   1/1   Running   3     10m
nginx   0/1   Completed   2     10m
nginx   0/1   CrashLoopBackOff   2     11m
nginx   1/1   Running   3     11m
nginx   1/1   Running   3     12m

我不明白第3行和第4行显示的计数。重新启动计数的确切含义是什么?

重新启动计数表示pod内容器重新启动的次数,它基于尚未移除的死容器的数量。请注意,这是根据死容器计算得出的

命令上的
-w
用于监视标志,各种标题如下所示

$ kubectl get pods -w
NAME      READY   STATUS    RESTARTS   AGE
nginx     1/1     Running   0          21m
要获得详细的输出,请使用
-o宽
标志

$ kubectl get pods -o wide
NAME      READY   STATUS    RESTARTS   AGE   IP            NODE                    NOMINATED NODE   READINESS GATES
nginx   1/1     Running   1          21h   10.244.2.36   worker-node-2   <none>           <none>

RESTARTS字段在Restart Count下进行跟踪,从pod描述中grep它,如下所示

$ kubectl describe pod nginx | grep -i "Restart"
    Restart Count:  0
因此,作为测试,我们现在尝试重新启动上述容器,并查看更新了哪些字段。 我们找到容器正在运行的节点,并使用docker命令从节点杀死容器,它应该由kubernetes自动重新启动

$ kubectl get pods -o wide
NAME     READY   STATUS    RESTARTS   AGE   IP            NODE                    NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          21h   10.244.2.36   worker-node-2   <none>           <none>
  • POD状态更改为错误
  • 就绪计数变为0/1
  • 输出中的值不一致。。这就是具有始终重启策略的pod的工作方式。它将尝试恢复失败的容器,直到达到CrashLoopBackOff限制

    提及

    Pod正在运行,并且有一个容器。容器成功退出。 日志完成事件

    如果重新启动策略为:

  • 始终:重新启动容器;Pod阶段保持运行
  • OnFailure:Pod阶段成功
  • 永不:Pod阶段成功
  • 关于
    CrashLoopBackOff
    状态:
    CrashloopBackOff
    意味着一个吊舱开始、崩溃、再次启动,然后再次崩溃

    由kubelet重新启动的失败容器以指数退避延迟(10s、20s、40s…)重新启动,以五分钟为上限,并在成功执行十分钟后重置

    CrashLoopBackOff
    事件的发生有不同的原因,大多数te案例与以下相关: -容器中的应用程序不断崩溃 -pod或容器的某些参数配置不正确 -部署过程中出错

    无论何时遇到
    紧急回退
    进行
    kubectl描述
    调查:

    kubectl描述pod_名称——名称空间名称

    user@minikube:~$ kubectl describe pod ubuntu-5d4bb4fd84-8gl67 --namespace default
    Name:         ubuntu-5d4bb4fd84-8gl67
    Namespace:    default
    Priority:     0
    Node:         minikube/192.168.39.216
    Start Time:   Thu, 09 Jan 2020 09:51:03 +0000
    Labels:       app=ubuntu
                  pod-template-hash=5d4bb4fd84
    Status:       Running
    Controlled By:  ReplicaSet/ubuntu-5d4bb4fd84
    Containers:
      ubuntu:
        Container ID:   docker://c4c0295e1e050b5e395fc7b368a8170f863159879821dd2562bc2938d17fc6fc
        Image:          ubuntu
        Image ID:       docker-pullable://ubuntu@sha256:250cc6f3f3ffc5cdaa9d8f4946ac79821aafb4d3afc93928f0de9336eba21aa4
        State:          Terminated
          Reason:       Completed
          Exit Code:    0
          Started:      Thu, 09 Jan 2020 09:54:37 +0000
          Finished:     Thu, 09 Jan 2020 09:54:37 +0000
        Last State:     Terminated
          Reason:       Completed
          Exit Code:    0
          Started:      Thu, 09 Jan 2020 09:53:05 +0000
          Finished:     Thu, 09 Jan 2020 09:53:05 +0000
        Ready:          False
        Restart Count:  5
        Mounts:
          /var/run/secrets/kubernetes.io/serviceaccount from default-token-xxxst (ro)
    Conditions:
      Type              Status
      Initialized       True 
      Ready             False 
      ContainersReady   False 
      PodScheduled      True 
    Volumes:
      default-token-xxxst:
        Type:        Secret (a volume populated by a Secret)
        SecretName:  default-token-xxxst
        Optional:    false
    QoS Class:       BestEffort
    Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                     node.kubernetes.io/unreachable:NoExecute for 300s
    Events:
      Type     Reason     Age                    From               Message
      ----     ------     ----                   ----               -------
      Normal   Scheduled  7m16s                  default-scheduler  Successfully assigned default/ubuntu-5d4bb4fd84-8gl67 to minikube
      Normal   Created    5m59s (x4 over 6m52s)  kubelet, minikube  Created container ubuntu
      Normal   Started    5m58s (x4 over 6m52s)  kubelet, minikube  Started container ubuntu
      Normal   Pulling    5m17s (x5 over 7m5s)   kubelet, minikube  Pulling image "ubuntu"
      Normal   Pulled     5m15s (x5 over 6m52s)  kubelet, minikube  Successfully pulled image "ubuntu"
      Warning  BackOff    2m2s (x24 over 6m43s)  kubelet, minikube  Back-off restarting failed container
    

    事件
    部分将为您提供有关所发生事件的详细解释。

    列出所有名称空间中重新启动的POD:

    kubectl get pods -A |awk  '$5 != "0" {print $0}'
    
    ubuntu@cluster-master:~$ kubectl get pods -o wide
    NAME   READY   STATUS   RESTARTS   AGE   IP            NODE            NOMINATED NODE   READINESS GATES
    nginx   0/1      Error    0          21h   10.244.2.36  worker-node-2   <none>           <none>
    
    ubuntu@cluster-master:~$ kubectl get pods -o wide
    NAME    READY   STATUS    RESTARTS   AGE   IP            NODE            NOMINATED NODE   READINESS GATES
    nginx   1/1     Running   1          21h   10.244.2.36   worker-node-2   <none>           <none>
    
    
    $ kubectl describe pods nginx  | grep -i "Restart"
        Restart Count:  1
    
    user@minikube:~$ kubectl describe pod ubuntu-5d4bb4fd84-8gl67 --namespace default
    Name:         ubuntu-5d4bb4fd84-8gl67
    Namespace:    default
    Priority:     0
    Node:         minikube/192.168.39.216
    Start Time:   Thu, 09 Jan 2020 09:51:03 +0000
    Labels:       app=ubuntu
                  pod-template-hash=5d4bb4fd84
    Status:       Running
    Controlled By:  ReplicaSet/ubuntu-5d4bb4fd84
    Containers:
      ubuntu:
        Container ID:   docker://c4c0295e1e050b5e395fc7b368a8170f863159879821dd2562bc2938d17fc6fc
        Image:          ubuntu
        Image ID:       docker-pullable://ubuntu@sha256:250cc6f3f3ffc5cdaa9d8f4946ac79821aafb4d3afc93928f0de9336eba21aa4
        State:          Terminated
          Reason:       Completed
          Exit Code:    0
          Started:      Thu, 09 Jan 2020 09:54:37 +0000
          Finished:     Thu, 09 Jan 2020 09:54:37 +0000
        Last State:     Terminated
          Reason:       Completed
          Exit Code:    0
          Started:      Thu, 09 Jan 2020 09:53:05 +0000
          Finished:     Thu, 09 Jan 2020 09:53:05 +0000
        Ready:          False
        Restart Count:  5
        Mounts:
          /var/run/secrets/kubernetes.io/serviceaccount from default-token-xxxst (ro)
    Conditions:
      Type              Status
      Initialized       True 
      Ready             False 
      ContainersReady   False 
      PodScheduled      True 
    Volumes:
      default-token-xxxst:
        Type:        Secret (a volume populated by a Secret)
        SecretName:  default-token-xxxst
        Optional:    false
    QoS Class:       BestEffort
    Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                     node.kubernetes.io/unreachable:NoExecute for 300s
    Events:
      Type     Reason     Age                    From               Message
      ----     ------     ----                   ----               -------
      Normal   Scheduled  7m16s                  default-scheduler  Successfully assigned default/ubuntu-5d4bb4fd84-8gl67 to minikube
      Normal   Created    5m59s (x4 over 6m52s)  kubelet, minikube  Created container ubuntu
      Normal   Started    5m58s (x4 over 6m52s)  kubelet, minikube  Started container ubuntu
      Normal   Pulling    5m17s (x5 over 7m5s)   kubelet, minikube  Pulling image "ubuntu"
      Normal   Pulled     5m15s (x5 over 6m52s)  kubelet, minikube  Successfully pulled image "ubuntu"
      Warning  BackOff    2m2s (x24 over 6m43s)  kubelet, minikube  Back-off restarting failed container
    
    kubectl get pods -A |awk  '$5 != "0" {print $0}'