[root@k8s-master1 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-3 1/1 Running 2 (34m ago) 14h
NAME
:Pod 的名称。READY
:代表 Pod 里面有几个容器,前面是启动的,后面是总数,
1
/
1
1/1
1/1。STATUS
:就是当前 Pod 状态,最常见的就是 Running
正在运行,最期望的状态,只要不是 Running
的就说明有问题,就算是 Running
的就不一定没有问题。
|
|
---|---|
Pending 挂起 | 在执行创建 Pod 过程中,命令行已经执行,Pod 已经被 K8s 系统接受,但仍有一个或多个容器未被创建,可以通过 kubectl describe 查看处于 Pending 状态的原因。 |
Running 运行中 | Pod 已经被绑定到一个节点上,并且所有的容器都已经被创建,而且至少有一个是运行状态,或者是正在启动或者重启,可以通过 kubectl logs 查看 Pod 的日志。 |
Succeeded 成功 | 所有容器执行成功并终止,并且不会再次重启,可以通过 kubectl logs 查看 Pod 的日志 |
Failed 失败 | 至少有一个容器没有正常退出,以失败告终,在 Linux 上每个命令都有个状态值和信号值,状态值正常是 0 ? 255 0-255 0?255 之间,正常状态值为 0 0 0,容器的创建状态只要是非 0 0 0 就是异常的。 |
Unknown 未知 | 通常是是通信出问题了,不知道状态是啥通常是 Uknown 。 |
imagePullBackOffErrimagePull 镜像拉取失败 | 镜像拉取失败,一般是由于镜像不存在、网络不通或者需要登录认证引起的,可以使用 describe 命令查看具体原因。 |
CrashLoopBackOff 容器启动失败 | 容器启动失败,有可能是打的镜像文件本身就有问题,不能正常来启动,可以通过 logs 命令查看具体原因,一般为启动命令不正确,健康检查不通过等。 |
OOMKilled 内存溢出 | 内存溢出,运行的容器本身出现内存溢出,Tomcat JVM 栈基于 JVM 做各种各样的内存限制,对容器本身要做资源限制,一旦容器本身资源不够了,我们对这个容器本身资源限制和 JVM 那种内存冲突了,比如 JVM 需要 4 个 G,结果容器只给 2 个 G,那这样就出现内存溢出,不够用;还有一种方式,程序本身有问题,JVM 和容器内存限制都够用,还是内存溢出了。JVM 本身给的内存不够用造成的报错叫 OOM 内存溢出错误,一旦出现这种错误,容器或者程序本身会自动 kill 掉,程序一旦自己把自己 kill 掉意味着容器就没了,这个 OOM 就是容器里面的程序内存溢出了,一般是内存限制设置太小。 |
Terminating 终止 | Pod 正在被删除,可以通过 describe 查看状态。 |
SysctlForbidden 内核启动失败 | 和 Linux 内核相关,在启动 Pod 的时候加了一些内核的需求,但是没有开放需求,就会造成内核启动失败。 |
Completed 主进程退出 | 容器内部主进程退出, 一般计划任务执行结束会显示该状态。 |
ContainerCreateing 创建容器 | Pod 正在创建, 一般为正在下载镜像, 或者有配置不当的地方, 可以通过 describe 查看具体原因。 |
[root@k8s-master1 ~]# kubectl describe pods nginx-3
Name: nginx-3
#pod名字
Namespace: default
#Namespace
Priority: 0
#优先级
Service Account: default
#默认使用default
Node: k8s-node1.guoguo.com/192.168.1.101
#绑定的节点node1
Start Time: Sun, 06 Aug 2023 17:32:26 +0800
#创建的时间
Labels: app=nginx
#标签,如果我们没有加标签,会自动加一个标签。如果是pod通常是run=pod名称
env=dev
Annotations: cni.projectcalico.org/containerID:
#资源注解
a121ada4cbabc46e302ba38008a7d6887f8f4035c8b42f781233f4fa3013bd96
cni.projectcalico.org/podIP: 192.26.131.132/32
#pod的ip
cni.projectcalico.org/podIPs: 192.26.131.132/32
Status: Running
#当前状态
IP: 192.26.131.132
#pod ip
IPs:
IP: 192.26.131.132
Containers:
nginx:
Container ID: containerd://57a204528d873a006134dcb7e58739b6adcbbd1b299d4b7e4984c451d47af86c
Image: harbor.guoguo.com/apps/ubuntu-nginx:1.22.1
#镜像
Image ID: harbor.guoguo.com/apps/ubuntu-nginx@sha256:8818a74320ea5451b340d47faadba66cc9f582c9b734526c65076808412803a1
Port: 80/TCP
Host Port: 0/TCP
State: Running
Started: Mon, 07 Aug 2023 07:24:36 +0800
Last State: Terminated
Reason: Unknown
Exit Code: 255
Started: Sun, 06 Aug 2023 21:17:40 +0800
Finished: Mon, 07 Aug 2023 07:23:29 +0800
Ready: True
Restart Count: 2
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-9lwkh (ro)
Conditions:
Type Status
#类型 #状态
Initialized True
#初始化 #成功
Ready True
#准备 #成功
ContainersReady True
#容器准备 #成功
PodScheduled True
#pod调度 #成功
Volumes:
#卷组
kube-api-access-9lwkh:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
#服务类
Node-Selectors: <none>
#没有节点选择 #为none就说明没有给Node-selectors提特殊的节点选择
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events: <none>