K8S学习之基础八:pod的状态和重启策略

1、常见的pod状态

pending、running、succeeded 、failed

第一阶段:

挂起(pending):

挂起(Pending)

正在创建Pod但是Pod中的容器还没有全部被创建完成,处于此状态的Pod应该检查Pod依赖的存储是否有权限挂载 镜像是否可以下载、调度是否正常等

我们在请求创建pod时,条件不满足,调度没有完成,没有任何一个节点能满足调度条件, 已经创建了 pod 但是没有适 合它运行的节点叫做挂起,调度没有完成

失败(Failed) :Pod 中的所有容器都已终止了,并且至少有一个容器是因为失败终止。也就是说,容器以非0状态退 出或者被系统终止。

未知(Unknown) :未知状态,所谓pod 什么状态是apiserver和运行在pod节点的kubelet进行通信获取状态信息的, 如果节点之上的kubelet本身出故障,那么apiserver就连不上kubelet,得不到信息了 ,就会看Unknown,通常是由于 与pod所在的node节点通信错误。

Error 状态: Pod 启动过程中发生了错误

成功(Succeeded) Pod中的所有容器都被成功终止,即pod里所有的containers均已terminated。

第二阶段:

Unschedulable:Pod不能被调度, scheduler没有匹配到合适的node节点

PodScheduled:pod正处于调度中,在scheduler刚开始调度的时候,还没有将pod分配到指定的node,在筛选出合适的 节点后就会更新etcd数据,将pod分配到指定的node

Initialized:所有pod中的初始化容器已经完成了

ImagePullBackOff:Pod所在的node节点下载镜像失败

Running:Pod内部的容器已经被创建并且启动。

扩展:还有其他状态,如下:

Evicted状态:出现这种情况,多见于系统内存或硬盘资源不足,可df-h查看docker存储所在目录的资源使用情 况如果百分比大于85%,就要及时清理下资源,尤其是一些大文件、docker镜像。

CrashLoopBackOff:容器曾经启动了,但可能又异常退出了

2、pod重启策略

Pod的重启策略(RestartPolicy)应用于Pod内的所有容器,当某个容器异常退出或者健康检查失败时,kubelet将根据 重启策略 来进行相应的操作。

Pod 的 spec 中包含一个 restartPolicy 字段,其可能取值包括 Always、OnFailure 和 Never 。默认值是 Always。

Always: 只要容器异常退出, kubelet 就会 自动重启该容器。 (这个是默认的重启策略)

OnFailure:当容器终止运行且退出码不为0时, kubelet自动重启该容器。

Never:不论容器运行状态如何,kubelet都不会重启该容器。

​​​​​​​​​​​​​​2.1、测试Always重启策略

进入pod内,停掉容器,发现容器会自动重启,从pod的重启次数可以看出来

vi pod-always.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-always
  namespace: default
  labels:
    app: nginx
spec:
  restartPolicy: Always
  containers:
  - name: pod-always
    image: 172.16.80.140/nginx/nginx:1.26
    imagePullPolicy: IfNotPresent

​​​​​​​2.2、测试never重启策略

​​​​​​​2.2.1、正常停止容器里的tomcat 服务,pod正常运行,容器没有重启

​​​​​​​2.2.2、非正常停止容器里的tomcat服务 容器状态是error

​​​​​​​2.3、测试OnFailure重启策略

vi pod-onfailure.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-onfailure
  namespace: default
  labels:
    app: tomcat
spec:
  restartPolicy: OnFailure
  containers:
  - name: pod-onfailure
    image: 172.16.80.140/tomcat/tomcat:v1
    imagePullPolicy: IfNotPresent

​​​​​​​2.3.1、正常停止容器里的tomcat服务 pod正常,容器没有重启

​​​​​​​2.3.2、非正常停止容器里的tomcat服务 pod正常,容器重启

相关推荐
小王C语言5 分钟前
【数据结构初阶】---时间复杂度和空间复杂度了解及几道相关OJ题
java·数据结构·算法
小马爱打代码10 分钟前
设计模式详解(单例模式)
java·单例模式·设计模式
Java中文社群12 分钟前
华为一面:谈谈你对JWT的理解?
java·后端·面试
caihuayuan512 分钟前
Golang的代码注释规范指南
java·大数据·spring boot·后端·课程设计
m0_7482548816 分钟前
【华为OD机考】2024E+D卷真题【完全原创题解 详细考点分类 不断更新题目 六种主流语言Py+Java+Cpp+C+Js+Go】
java·c语言·华为od
一直走下去-明31 分钟前
flask学习1-基础
python·学习·flask
~Yogi33 分钟前
每日学习Java之一万个为什么?(Maven篇+RPC起步+CICD起步)(待完善)
java·学习·maven
银之夏雪1 小时前
ESLint 深度解析:原理、规则与插件开发实践
java·前端·javascript
同学小张1 小时前
Ollama有安全漏洞! 国家网络安全通报中心紧急通报
人工智能·gpt·学习·安全·web安全·aigc·agi
重生之成了二本看我逆天改命走向巅峰1 小时前
从0搭建Tomcat第二天:深入理解Servlet容器与反射机制
java·开发语言·笔记·学习·servlet·tomcat·idea