Pod
中的钩子分为启动后钩子post start hook
和结束前钩子pre stop hook
。
post start hook
:主要是为了容器启动后做一些初始化工作。只有post start hook
启动成功了main container
才能正常工作。
pre stop hook
:一般在主进程结束之前做一些清理操作。清理操作可能会有一些要求,只有清理完成了pod
才会终止,所以一定要确保pre stop hook
的任务正常结束了,容器才能正常结束。
pod钩子示例
1.编写资源清单
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| root@k8s-master01:~/yaml/chapter04 apiVersion: v1 kind: Pod metadata: name: lifecycle-demo namespace: default spec: containers: - name: demo image: ikubernetes/demoapp:v1.0 imagePullPolicy: IfNotPresent securityContext: capabilities: add: - NET_ADMIN livenessProbe: httpGet: path: '/livez' port: 80 scheme: HTTP initialDelaySeconds: 5 lifecycle: postStart: exec: command: ['/bin/sh','-c','iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-ports 80'] preStop: exec: command: ['/bin/sh','-c','while killall python3; do sleep 1; done'] restartPolicy: Always
|
2.应用清单文件
1 2 3 4 5 6 7
| root@k8s-master01:~/yaml/chapter04 pod/lifecycle-demo created
root@k8s-master01:~/yaml/chapter04 NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES lifecycle-demo 1/1 Running 0 67s 10.244.2.22 k8s-node02 <none> <none>
|
3.测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| root@k8s-master01:~/yaml/chapter04 Chain PREROUTING (policy ACCEPT 53 packets, 3180 bytes) pkts bytes target prot opt in out source destination 0 0 REDIRECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 redir ports 80
Chain INPUT (policy ACCEPT 53 packets, 3180 bytes) pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination root@k8s-master01:~/yaml/chapter04 iKubernetes demoapp v1.0 !! ClientIP: 10.244.0.0, ServerName: lifecycle-demo, ServerIP: 10.244.2.22!
|