16、k8s-pod的生命周期-主容器-钩子函数(postStart-容器启动时执行、perStop-容器暂停前执行)命令
概念:kubernetes再主容器的启动之后核停止之前提供了两个钩子函数:
·post start:容器创建之后执行、如果失败了会重启容器
·per stop:容器终止之前执行、执行完成之后容器将成功终止、在其完成之前会堵塞删除容器的操作
钩子处理 器支持使用下面三种方式定义动作:
·Exec命令:在容器内执行一次命令
.....
lifecycle:
postStart: #容器启动后
exec: #容器启动后会执行一个命令
command: #需要执行的指令
- cat
- /tmp/healthy
.....
=========================实例==============================
1、创建yaml文件:vim pod-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", "echo postStart... > /usr/share/nginx/html/index.html"]
preStop:
exec: #在容器停止之前停止nginx服务
command: ["/usr/sbin/nginx","-s","quit"]
===========================================================================================
2、执行文件:kubectl create -f pod-exec.yaml
3、查看pod的ip:kubectl get pods pod-hook-exec -ndev -o wide
4、访问容器中的nginx服务:curl 10.244.1.60:80
·TCPSocket:再当前容器尝试访问指定的socket(不常用)
.....
lifecycle:
postStart:
tcpSocket:
port: 8080
....
·HTTPGet:再当前容器中向某个url发起http请求(不常用)
.......
lifecycle:
postStart:
httpGet:
path: / #URI地址
port: 80 #端口号
host: 192.168.177.160 #主机ip
scheme: HTTP #支持的协议,http或者https
.........