【云原生】Kubernetes之 Pod hook(钩子)

Pod hook介绍

Pod hook(钩子)是由 Kubernetes 管理的 kubelet 发起的,当容器中的进程启动前或者容器中的进程终止之前运行,这是包含在容器的生命周期之中。可以同时为 Pod 中的所有容器都配置 hook。

Hook 的类型包括两种:

exec:执行一段命令

HTTP:发送 HTTP 请求

示例如下:

复制代码
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: ["/usr/sbin/nginx","-s","quit"]

说明:

postStart 在容器创建之后(但并不能保证钩子会在容器 ENTRYPOINT 之前)执行,这时候 Pod 已经被调度到某台 node 上,被某个 kubelet 管理了,这时候 kubelet 会调用 postStart 操作,该操作跟容器的启动命令是在同步执行的,也就是说在 postStart 操作执行完成之前,kubelet 会锁住容器,不让应用程序的进程启动,只有在 postStart 操作完成之后容器的状态才会被设置成为 RUNNING

PreStop 在容器终止之前被同步阻塞调用,常用于在容器结束前优雅的释放资源

如果 postStart 或者 preStop hook 失败,将会终止容器

相关推荐
Anarkh_Lee4 小时前
Neo4j在win下安装教程(docker环境)
docker·容器·neo4j
迷路的小绅士5 小时前
防火墙技术深度解析:从包过滤到云原生防火墙的部署与实战
网络安全·云原生·防火墙技术·包过滤防火墙·状态检测防火墙
正经教主5 小时前
【问题】解决docker的方式安装n8n,找不到docker.n8n.io/n8nio/n8n:latest镜像的问题
运维·docker·容器·n8n
joker_zsl7 小时前
docker的安装和简单使用(ubuntu环境)
运维·docker·容器
啥都想学的又啥都不会的研究生7 小时前
Kubernetes in action-初相识
java·docker·微服务·容器·kubernetes·etcd·kubelet
Leon-zy8 小时前
【云计算】云计算中IaaS、PaaS、SaaS介绍
云原生·云计算·paas
赵我说的做_life8 小时前
基于Docker的Flask项目部署完整指南
docker·容器·flask
江畔独步9 小时前
docker容器监控&自动恢复
docker·容器·eureka
iangyu10 小时前
centos7部署k8s集群
云原生·容器·kubernetes
时迁24712 小时前
【k8s】k8s是怎么实现自动扩缩的
云原生·容器·kubernetes·k8s