pod探针和状态
探针
3种探针:探测pod里的容器是否存放、就绪、启动
- 优先级顺序: startupProbe--》readinessProbe--》livenessProbe
4种检测方式:
exec httpget grpc tcpsocket
- startupProbe能和其他的探针共存,如果startupProbe执行失败,就不再执行其他的探针了,如果执行成功,还是会执行其他探针
当探针发现pod没有运行的时候,kubelet会根据pod的重启策略,重启pod,提升了app的稳定性
探测结果:success dailure unknown
- 1.执行命令 exec 2.扫描端口 tcpSocket -->nc nmap 3.访问你的网站(适合跑web程序的容器) httpget --》使用http协议访问 4. gRPC 远程调用访问某个端口--》使是grpc协议去访问
容器的状态:waiting running terminated
pod状态
- Pending:
- Pod正在被调度或者容器正在创建或拉取镜像。调度器没有找到合适的节点服务器去运行pod
- 等待资源(如节点,cpu,内存不足)可用、镜像拉取失败、有污点,安全策略阻止启动等。
- Running:
- 所有容器都在运行,至少有一个容器还没有终止。
- 这通常意味着Pod正常运行,但是也可能是某些容器重启后再次运行。
- Succeeded:
- Pod的所有容器都成功终止,且不会重启。
- 例如,一个Job类型的Pod完成了它的工作并成功退出。
- Failed:
- Pod的所有容器都已终止,并且至少有一个容器以失败状态退出。
- 原因可能包括应用程序错误、资源耗尽、网络问题或其他运行时故障。
- Unknown:
- 无法从Kubernetes API服务器获取Pod的状态信息。
- 这可能是因为节点宕机、网络分区或Kubelet服务不可用。
除了上述状态,还有几个与Pod相关的子状态,可以通过kubectl describe pod <pod_name>命令查看,这些子状态提供了更详细的健康和性能信息。例如:
- ContainerCreating: 正在为Pod创建容器。
- CrashLoopBackOff: 容器在短时间内多次失败并重启,触发了重试机制。死循环 启动杀死
- ErrImagePull: 在尝试拉取容器镜像时遇到错误。网络问题
- ImagePullBackOff: 镜像拉取失败,网络不通或网速慢正在等待重试。
- Terminating: Pod正在被删除,容器正在停止。
6.init:0/2: 初始化容器失败 initialize
- completed
- pod里的容器主进程已经退出,容器没有退出 死而不僵
- OOMKilled
- 使用的内存超过范围被杀死 out of memory
生命周期:
& 放后台挂起
pcb进程控制块:pid status address进程存在的唯一凭证
zombie 僵尸进程: 进程已经退出,但是还占用内存空间
进程由pcb(进程控制块)+ code程序代码 + data数据
pcb(进程控制块):pid 、status、address: 进程存在的唯一凭证--》
杀死僵尸进程的父进程
pstree -p 查看到僵尸进程的信息
nc 是端口扫描(嗅探),探测别人的服务器开放了哪些端口
[root@k8s-master-1 probe]# netstat -anplut|grep -i listen netstat 查看自己的服务器开放了哪些端口
tcp 0 0 127.0.0.1:10257 0.0.0.0:* LISTEN 2500/kube-controlle
[root@k8s-master-1 probe]# nc -z -w 1 192.168.205.141 22
-z 不发送数据 -w 指定超时时间
[root@k8s-master-1 probe]# echo $? 0
[root@k8s-master-1 probe]# nc -z -w 1 www.baidu.com 22
[root@k8s-master-1 probe]# echo $? 1