k8s-initC

Init 容器能做什么?

因为 Init 容器具有与应用容器分离的单独镜像,其启动相关代码具有如下优势:

  • Init 容器可以包含一些安装过程中应用容器中不存在的实用工具或个性化代码。例如,没有必要仅为了在安装过程中使用类似 sed、 awk、python 或 dig 这样的工具而去FROM 一个镜像来生成一个新的镜像。
  • Init 容器可以安全地运行这些工具,避免这些工具导致应用镜像的安全性降低。
  • 应用镜像的创建者和部署者可以各自独立工作,而没有必要联合构建一个单独的应用镜像。
  • Init 容器能以不同于Pod内应用容器的文件系统视图运行。因此,Init容器可具有访问 Secrets 的权限,而应用容器不能够访问。
  • 由于 Init 容器必须在应用容器启动之前运行完成,因此 Init
    容器提供了一种机制来阻塞或延迟应用容器的启动,直到满足了一组先决条件。一旦前置条件满足,Pod内的所有的应用容器会并行启动。

示例:

  1. 在master上见三个yaml文件:init-pod.yaml、myservice.yaml、mydb.yaml
  2. 运行init-pod.yaml文件
    vim init-pod.yaml
apiVersion: v1
kind: Pod
metadata:
   name: myapp-pod
   labels:
     app: myapp
spec:
  containers:
  - name: myapp-container
    image: busybox
    command: ['sh', '-c', 'echo The app is running! && sleep 3600']
  initContainers:
  - name: init-myservice
    image: busybox
    command: ['sh' , '-c','until nslookup myservice; do echo waiting for myservice; sleep 2; done;']
  - name: init-mydb
    image: busybox
    command: ['sh', '-c', 'until nslookup mydb; do echo waiting for mydb; sleep 2; done;']

上面表示在搭建myapp-container容器之前需要搭建init-myservice容器和init-mydb容器
2.1 运行init-pod.yaml 文件

[root@apiserver ~]# kubectl create -f init-pod.yaml 
pod/myapp-pod created

2.2查看pod(init连个都没有起来,ready也没有起来)

[root@apiserver ~]# kubectl get pod
NAME        READY   STATUS     RESTARTS   AGE
myapp-pod   0/1     Init:0/2   0          47s
  1. 运行init-myservice
vim myservice.yaml

编辑:

kind: Service
apiVersion: v1
metadata:
 name: myservice
spec:
 ports:
   - protocol: TCP
     port: 80
     targetPort: 9376

查看pod(这时init已经起来一个了)

[root@apiserver ~]# kubectl get pod
NAME        READY   STATUS     RESTARTS   AGE
myapp-pod   0/1     Init:1/2   0          13m
  1. 运行mydb.yaml文件
vim mydb.yaml

编辑:

kind: Service 
apiVersion: v1
metadata:
  name: mydb
spec:
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9377

查看pod:(ready已经成功)

[root@apiserver ~]# kubectl  get pod
NAME        READY   STATUS    RESTARTS   AGE
myapp-pod   1/1     Running   0          61s

ok 完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值