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.yamlapiVersion: 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-demoNAME READY STATUS RESTARTS AGE
lifecycle-demo 1/1 Running 0 26h# kubectl exec -it lifecycle-demo -- /bin/bashpostStart处理器创建的message文件存在root@lifecycle-demo:/# cat /usr/share/message
Hello from the postStart handlerpostStart事件。 但是,不能保证在调用Container的entrypoint之前先调用postStart处理程序。 postStart处理程序相对于Container的代码异步运行,但是Kubernetes对容器的管理会阻塞,直到postStart处理程序完成。 在postStart处理程序完成之前,容器的状态不会设置为RUNNING。
下一篇:C/S与B/SD的认知与区别