技术笔记分享

Pod状态描述

状态列为 STATUS

Pod重启策略(RestartPolicy)

Pod重启策略使用的参数为restartPolicy,字段有三个可选值:

  • Always:当容器终止退出后,总是重启容器,默认策略(适用于绝大多数需要24小时不间断运行的应用)
  • OnFailure:当容器异常退出(退出状态码非0)时,才重启容器。适于job(适用于一次性计划任务或者批处理任务,当进行计划任务或者批处理的跑失败的时候,在linux中会异常退出,这个时候才会重启容器,然后重新跑计划任务,如果计划任务成功,则返回0,正常退出,正常退出后则不在启动容器,符合预期,linux中正常运行返回0,异常退出返回非0,)
  • Never:当容器终止退出,从不重启容器。适于job(让无论是正常退出还是异常退出都不重启容器,一般用的比较少)

Pod Always重启策略示例

1.编写配置清单

2.创建一个Pod资源

kubectl apply -f restart_pod.yaml

3.找到pod所运行的Node

4.到相应的Node上给结束掉这个Pod,不能在master上使用 kubectl delete pods/restart-pod 来介绍,因为这样会删掉Pod

5.然后到master上会发现以下过程

6.通过 kubectl describe 命令查看更详细的事件信息

undefined

Pod OnFailure重启策略示例

1.编写资源配置清单

以下运行了一个Pod,容器镜像为centos,在容器中运行一个脚本,在/data/hello文件中写入数字1-300,每隔一秒写一个数字,写完后脚本执行结束,则退出容器(需要300秒,5分钟),重启策略使用 OnFailure,我们这属于正常退出,退出后则不会再次启动容器。

2.创建资源对象

kubectl apply -f restart_pod.yaml

3.查看Pod状态

4.进入容器

kubectl exec -it pods/restart-pod -- /bin/bash

5.查看容器执行脚本进程

undefined

6.容器停止
当等待到5分钟,容器将脚本执行完成后,则退出容器,Pod状态也变为了 "Completed完成" 状态

undefined

因为我们使用的重启策略是OnFailure,我们的容器也属于正常退出,所以不会再去自动启动此容器

7.测试异常退出
再次创建此Pod,然后到指定的Node上停止此容器

发表评论

邮箱地址不会被公开。 必填项已用*标注