kubernets之init容器作用
一 init容器的作用
1.1 init容器是在pod的生命周期,保证该pod运行的一些前置条件满足之后才开始运行这个pod,例如需要依赖一些其他的pod,服务等,可以去对这些服务的状态进行检测,等所有前置的pod都好了才开始运行主容器,一个例子如下所示。
apiVersion: v1 kind: Pod metadata: name: init-pod labels: app: init spec: containers: - name: init-container image: busybox command: ['sleep','999999'] initContainers: - name: initService image: busybox command: ['sh','-c','until nslookup myservice;do echo waiting for myservice;sleep 2;done;'] - name: initMydb image: busybox command: ['sh','-c','until nslookup mydb;do echo waiting for mydb;sleep 2;done;']
1.2 创建一下看看这个pod会发生什么
[root@node01 Chapter17]# k get po NAME READY STATUS RESTARTS AGE init-pod1 0/1 Init:0/2 0 2s
- STATUS这一栏有2个前置容器未就绪,所以主容器也无法ready
1.3 创建让initContainers就绪的svc
kind: Service apiVersion: v1 metadata: name: initService spec: ports: - protocol: TCP port: 80 targetPort: 6376
apiVersion: v1 kind: Service metadata: name: initMydb spec: ports: - protocol: TCP port: 80 targetPort: 6377
1.4 之后在查看容器的运行状态
[root@node01 Chapter17]# k get po NAME READY STATUS RESTARTS AGE init-pod1 0/1 Init:0/2 0 14s [root@node01 Chapter17]# k get po NAME READY STATUS RESTARTS AGE init-pod1 0/1 Init:0/2 0 15s [root@node01 Chapter17]# k get po NAME READY STATUS RESTARTS AGE init-pod1 1/1 Running 0 75s
- 在所有的前置容器都运行成功之后
- 主容器也成功的运行起来了