Pod创建过程:
-
首先创建一个pod,然后创建一个API Server 和 Etcd【把创建出来的信息存储在etcd中】
-
然后创建 Scheduler,监控API Server是否有新的Pod,如果有的话,会通过调度算法,把pod调度某个node上
-
在node节点,会通过 kubelet -- apiserver 读取etcd 拿到分配在当前node节点上的pod,然后通过docker创建容器
在容器环境初始化后:
初始化阶段:
-
初始化容器(由0到多个 )
-
start启动:钩子函数(回调函数)
配置Poststart:利用钩子函数实现
Lifecycle生命周期探针:
注:钩子函数分为:
start
启动:poststart
(容器启动后钩子):
如容器启动后需要执行一些初始化命令就需要用到PostStart钩子
stop结束:prystop(
容器终止前钩子
)
: 如容器被干掉之前需要执行一些操作,如java服务在容器终止前打印堆栈信息,帮助开发排查异常原因)
(
开始与结束中间就是容器)
3.启动探针:
Startup
Probe检测主容器是否启动
4.就绪探针:
ReadnessProbe启动成功后的探测
5.存活探针:
LivenessProbe持续检测应用是否存活
![](https://i-blog.csdnimg.cn/blog_migrate/ddbc5d41d298a62b5d20d56953a3e9f1.png)
Prestop生命周期:
利用prestop数据清理:
![](https://i-blog.csdnimg.cn/blog_migrate/8700e2488dc186e5a65c0485e499dea2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bcb7432375079050d49f20a146d83439.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9516dbe6778dc0b9f5f1eb2e03143d81.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b1f9e3c03d50a9f7af40e4fbffc0bf7c.png)
#kubectl get po -o -wide 获取详细信息
通过curl查看访问地址是否执行
![](https://i-blog.csdnimg.cn/blog_migrate/b9de43dea74b8e459c953a6e34d1f84c.png)
测试删除:
#vim nginx-prestop-po.yaml
#kubectl get po -w
-w:持续监听
#time kubectl delete po nginx-po
-time:会监听命令执行的时间
#vim nginx-prestop-po.yaml
默认是30
![](https://i-blog.csdnimg.cn/blog_migrate/457887fb69f6b1741abe7a9797064dfd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/daaccd96bb02a9d6341b7ba4011ac3d9.png)