1、流程图如下所示:
2、初始化容器
apiVersion: v1
kind: Pod
metadata:
name: pod-initcontainer
namespace: test
spec:
containers:
- name: main-container
image: nginx:1.17.1
ports:
- name: nginx-port
containerPort: 80
initContainers:
- name: test-mysql
image: busybox:1.30
command: ['sh','-c','until ping 192.168.1.166 -c 1; do echo waiting for mysql...; sleep 2; done;']
这里我创建了一个pod,然后添加了一个初始化容器,那么意味着会要等test-mysql容器启动以后,main-container容器才会启动。
3、钩子函数
创建如下的一个pod
apiVersion: v1
kind: Pod
metadata:
name: pod-hook-exec
namespace: test
spec:
containers:
- name: main-container
image: nginx:1.17.1
ports:
- name: nginx-port
containerPort: 80
lifecycle:
postStart:
exec:
command: ["/bin/sh","-c", "echo postStart... >/usr/share/nginx/html/index.html"]
preStop:
exec:
command: ["/usr/sbin/nginx", "-s", "quit"]
由于这个Pod在启动之前,修改了nginx的index.html文件,所以只要访问这个pod的虚拟ip,应该就能看到这个postStart…这几个文字,访问看下:
结果显示确实如此
4、容器探测
容器探测的目的,就是为了提供一个方法来验证pod里面的容器是否是启动的
。。。