k8s学习pod第七天

init Container

初始化容器是一类只运行一次的容器,本质是也是容器,不同容器间启动有先后顺序,只有前面的容器运行成功了,后面的容器才能运行

初始化容器的场景:

  1. 在其他容器运行之前做个初始化,比如配置文件生成、环境变量生成
  2. 有先后顺序的运行容器,比如像启动数据库容器、再启动服务容器
  3.  下载依赖文件或依赖包,对系统做一些预制的操作
  4. apiVersion: v1
    kind: Pod
    metadata:
       name: nginx
       annotations:
    spec:
       #初始化容器,只会执行一次
       initContainers:
       - name: busybox
         image: busybox
         command:
         - wget
         - "-O"
         - "/work-dir/index.html"
         - http://kubernetes.io
         volumeMounts:
         - name: workdir
           mountPath: "/work-dir"
       containers:
       - name: nginx
         image: nginx
         ports:
         - containerPort: 80
         volumeMounts:
         - name: workdir
           mountPath: /usr/share/nginx/html
       dnsPolicy: Default
       restartPolicy: Always
       volumes:
       - name: workdir
         emptyDir: {}

    已上配置文件,首先要运行一个busybox,并且下载一个文件到/work-dir中,然后启动nginx容器,在/usr/share/nginx/html中就有了文件index.html

    //查看nginx容器的index.html文件
    kubectl exec -it nginx -- cat  /usr/share/nginx/html/index.html
    kubectl  describe pod nginx
    Name:             nginx
    Namespace:        default
    Priority:         0
    Service Account:  default
    Node:             scms01/172.16.2.220
    Start Time:       Fri, 21 Apr 2023 17:55:46 +0800
    Labels:           <none>
    Annotations:      cni.projectcalico.org/containerID: a41631bbfb14e42f600f44841550a2ccaa7977e22d19142033ce19f7ee7a69fc
                      cni.projectcalico.org/podIP: 192.168.61.43/32
                      cni.projectcalico.org/podIPs: 192.168.61.43/32
    Status:           Running
    IP:               192.168.61.43
    ...
    
    
    Events:
      Type    Reason     Age   From               Message
      ----    ------     ----  ----               -------
      Normal  Scheduled  33m   default-scheduler  Successfully assigned default/nginx to scms01
      Normal  Pulling    33m   kubelet            Pulling image "busybox"
      Normal  Pulled     33m   kubelet            Successfully pulled image "busybox" in 1.648537736s (1.648546748s including waiting)
      Normal  Created    33m   kubelet            Created container busybox
      Normal  Started    33m   kubelet            Started container busybox
      Normal  Pulling    33m   kubelet            Pulling image "nginx"
      Normal  Pulled     33m   kubelet            Successfully pulled image "nginx" in 1.695249999s (1.695256875s including waiting)
      Normal  Created    33m   kubelet            Created container nginx
      Normal  Started    33m   kubelet            Started container nginx

    可见先启动了buysbox,然后又启动了nginx容器。

init container与应用容器的区别

  1. init container 必须在应用容器启动之前运行,但设置了多个init container ,将按顺序执行,只有前面的成功后,后面的才能运行
  2. 在init container的定义中也可以设置资源限制、Volume的使用和安全策略。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值