pod--钩子函数
函数 -- Pod 钩子
2023-09-11 14:21:18 时间
前言
环境:centos7.9 docker-ce-20.10.9 kubernetes-version v1.22.6
pod资源钩子函数详解
钩子函数能够感知自身生命周期中的时间,并在相应的时刻到来时运行指定的程序代码。
kubernetes在主容器的启动之后和停止之前提供了两个钩子函数:
postStart:容器启动之后执行,如果失败了会重启容器;
preStop:容器终止之前执行,执行完成后容器将会成功终止,该钩子函数会在命令执行完成之前会阻塞删除容器的操作;
postStart:这个钩子在容器创建后立即执行。但是,并不能保证钩子将在容器ENTRYPOINT之前运行,
因为没有参数传递给处理程序。主要用于资源部署、环境准备等。不过需要注意的是如果钩子花费太长
时间以至于不能运行或者挂起,容器将不能达到running状态。
preStop:这个钩子在容器终止之前立即被调用。它是阻塞的,意味着它是同步的, 所以它必须在
删除容器的调用发出之前完成。主要用于优雅关闭应用程序、通知其他系统等。如果钩子在执行期间
挂起,Pod阶段将停留在running状态并且永不会达到failed状态。
钩子函数的三种定义动作
钩子函数支持exec、httpGet、tcpSocket三种方式定义动作,如下所示:
exec命令:在容器内执行一次性命令。如下演示:
.......
lifecycle:
postStart:
exec:
command:
- cat
- /tmp/healthy
........
httpGet:向容器IP地址、端口、路径发起http 请求。如下演示:
lifecycle:
postStart:
httpGet:
host: xxx #想要连接的主机ip,默认是当前pod的ip,一般省略不写
httpHeaders: xx #可以自定义请求头
path: xxxx #路径
port: 8080 #连接端口
scheme: http #协议
tcpSocket:向容器的IP地址,端口建立tcp socket连接。如下演示:
lifecycle:
postStart:
tcpSocket:
host: xxx #想要访问的主机ip,默认是当前pod的ip,一般省略不写
port: 8080 #访问的端口
钩子函数演示范例
下面使用exec命令来演示钩子函数
[root@master ~]# vim pod-postStart-preStop.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-poststart-prestop
labels:
env: dev
namespace: default
spec:
containers:
- name: nginx
image: nginx:1.7.9
lifecycle: #定义钩子函数
postStart:
exec: #覆盖掉nginx的index.html的内容
command: ["/bin/sh","-c","echo 'postStart...' > /usr/share/nginx/html/index.html"]
preStop:
exec:
command: ["/usr/sbin/nginx","-s","quit"]
[root@master ~]# kubectl get pod pod-poststart-prestop -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod-poststart-prestop 1/1 Running 0 20s 10.244.1.137 node1 <none> <none>
[root@master ~]# curl 10.244.1.137:80 #访问nginx,内容已经是我们自定义的内容了,说明postStart钩子函数功能是正常的
postStart...
相关文章
- SSDTHook实例--编写稳定的Hook过滤函数
- SQL Server -- stuff 函数
- Java 文件复制函数
- 第一章 聚合函数概述
- algorithm头文件下的常用函数--习题
- 第14周报告1--函数的递归
- PostgreSQL--常用字符串函数与操作符
- SQL文本处理函数--soundex()函数
- Python爬虫技术--基础篇--函数式编程(下篇)
- Perl函数:字符串相关函数
- Delphi ClearCommError函数
- oracle函数 LENGTHC(c1).LENGTH2(c1).LENGTH4(c1)
- 副作用与纯函数--纯函数化是副作用处理的基本方案
- DLL中导出函数的两种方式(dllexport与.def文件)
- Visual Studio展开和折叠函数代码和禁止自动展开
- excel--CLEAN()函数,解决为什么看着相同的字符串但是len()长度不同
- Vue3入门到精通--ref以及ref相关函数
- 《剑指offer》-- 构建乘积数组、求1+2+3+...+n、不用加减乘除做加法、包含min函数的栈、用两个栈实现队列
- 《C#零基础入门之百识百例》(七十三)匿名函数 -- Lambda表达式
- 解决mysql不能创建函数
- acm之路--母函数 by小宇
- python第十四课--排序及自定义函数之自定义函数(案例三)
- iOS中的round/ceil/floorf函数略解
- C语言字符操作函数
- 【图像处理】——opencv常用函数
- 人工智能算法--启发式搜索与估值函数
- Python 函数
- PHP常用函数系列--base64图片上传