【云原生】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 失败,将会终止容器

相关推荐
优雅的造轮狮7 小时前
WSL2 Docker Desktop配置优化及迁移D盘指南
运维·docker·容器
西柚0018 小时前
Ubuntu22.04.5 + Docker + MySQL 5.7
mysql·docker·容器
Sean‘10 小时前
AKS 集群离线部署 kube-state-metrics 文档
运维·docker·容器
万象.10 小时前
docker存储卷分类与实操
docker·容器
F1FJJ11 小时前
只是想查个数据,不想装 phpMyAdmin
数据库·网络协议·容器·开源软件
.柒宇.12 小时前
基于 RHEL 9.7 搭建 Kubernetes v1.34 集群实战:Docker 运行时 (cri-dockerd) 与国内源配置详解
docker·云原生·容器·kubernetes·kubelet
F1FJJ12 小时前
Shield CLI:MySQL 插件 vs phpMyAdmin:轻量 Web 数据库管理工具对比
前端·网络·数据库·网络协议·mysql·容器
YMWM_13 小时前
docker在jetson thor的应用
运维·docker·容器·jetson thor
木子欢儿14 小时前
使用 Docker 快速搭建 MinIO 文件存储服务
运维·docker·容器
qq_2975746715 小时前
K8s系列第十四篇:K8s 故障排查实战:常见故障定位与解决方法
java·docker·kubernetes