kubernetes之给容器的生命周期事件添加处理器
2021-04-26 02:27
标签:sts 相对 lock sleep 存在 完成 block 创建 int 此文讲述如何给容器的声明周期时间添加处理器,Kubernetes支持 备注:此文档参考官方文档,并加以自己的理解。如有误导性的内容,请批评指正。 创建一个包含一个容器的Pod,容器中有 在配置文件中, 确认Pod中的容器正在运行 进入容器的shell 在shell中确认 创建容器后,Kubernetes立即发送 kubernetes之给容器的生命周期事件添加处理器 标签:sts 相对 lock sleep 存在 完成 block 创建 int 原文地址:https://www.cnblogs.com/mcsiberiawolf/p/12227852.html简介
postStart
和preStop
事件。Kubernetes在容器启动之后立即发送postStart
事件,在容器终止之前立即发送preStop
事件。
定义 postStart 和 preStop 处理器
postStart
和preStop
事件。文件名:lifecycle-events.yaml
apiVersion: v1
kind: Pod
metadata:
name: lifecycle-demo
spec:
containers:
- name: lifecycle-demo-container
image: nginx
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
preStop:
exec:
command: ["/bin/sh","-c","nginx -s quit; while killall -0 nginx; do sleep 1; done"]
postStart
命令写入一条message
文件到容器的/usr/share/message
目录。preStop
命令平滑停止nginx
。如果容器由于故障而终止,这将很有帮助。# kubectl apply -f /root/k8s-example/pods/lifecycle-events.yaml
# kubectl get pod lifecycle-demo
NAME READY STATUS RESTARTS AGE
lifecycle-demo 1/1 Running 0 26h
# kubectl exec -it lifecycle-demo -- /bin/bash
postStart
处理器创建的message
文件存在root@lifecycle-demo:/# cat /usr/share/message
Hello from the postStart handler
postStart
事件。 但是,不能保证在调用Container的entrypoint
之前先调用postStart
处理程序。 postStart
处理程序相对于Container的代码异步运行,但是Kubernetes对容器的管理会阻塞,直到postStart
处理程序完成。 在postStart
处理程序完成之前,容器的状态不会设置为RUNNING
。
下一篇:C/S与B/SD的认知与区别
文章标题:kubernetes之给容器的生命周期事件添加处理器
文章链接:http://soscw.com/index.php/essay/79624.html