Pod详解-⽣命周期-钩⼦函数钩⼦函数能够感知⾃⾝⽣命周期中的事件,并在相应的时刻到来时运⾏⽤户指定的程序代码。
kubernetes在主容器的启动之后和停⽌之前提供了两个钩⼦函数:
post start:容器创建之后执⾏,如果失败了会重启容器
pre stop :容器终⽌之前执⾏,执⾏完成之后容器将成功终⽌,在其完成之前会阻塞删除容器的操作钩⼦处理器⽀持使⽤下⾯三种⽅式定义动作:
Exec命令:在容器内执⾏⼀次命令
……
lifecycle:
postStart:
exec:
command:
- cat
- /tmp/healthy
……
TCPSocket:在当前容器尝试访问指定的socket
……
lifecycle:
postStart:
tcpSocket:
port: 8080
……
HTTPGet:在当前容器中向某url发起http请求
lifecycle:
postStart:
httpGet:
path: / #URI地址
port: 80 #端⼝号nginx停止命令
host: 192.168.5.3 #主机地址
scheme: HTTP #⽀持的协议,http或者https
……
接下来,以exec⽅式为例,演⽰下钩⼦函数的使⽤,创建pod-hook-exec.yaml⽂件,内容如下:
apiVersion: v1
kind: Pod
metadata:
name: pod-hook-exec
namespace: dev
spec:
containers:
- name: main-container
image: nginx:1.17.1
ports:
- name: nginx-port
containerPort: 80
lifecycle:
postStart:
exec: # 在容器启动的时候执⾏⼀个命令,修改掉nginx的默认⾸页内容
command: ["/bin/sh", "-c", " > /usr/share/nginx/html/index.html"]      preStop:
exec: # 在容器停⽌之前停⽌nginx服务
command: ["/usr/sbin/nginx","-s","quit"]
# 创建pod
[root@k8s-master01 ~]# kubectl create -f pod-hook-exec.yaml
pod/pod-hook-exec created
# 查看pod
[root@k8s-master01 ~]# kubectl get pods  pod-hook-exec -n dev -o wide
NAME          READY  STATUS    RESTARTS  AGE    IP            NODE
pod-hook-exec  1/1    Running    0          29s    10.244.2.48  node2
# 访问pod
[root@k8s-master01 ~]# curl 10.244.2.48
<

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。