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
  • 在所有的前置容器都运行成功之后
  • 主容器也成功的运行起来了
posted @ 2021-01-27 14:32  伊铭(netease)  阅读(313)  评论(0编辑  收藏  举报