我是靠谱客的博主 寒冷苗条,最近开发中收集的这篇文章主要介绍[置顶] kubernetes--Init Container,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

概念

Init Container就是做初始化工作的容器。可以有一个或多个,如果有多个,这些 Init Container 按照定义的顺序依次执行,只有所有的InitContainer 执行完后,主容器才启动。由于一个Pod里的存储卷是共享的,所以 Init Container 里产生的数据可以被主容器使用到。

Init Container可以在多种K8S资源里被使用到如Deployment、DaemonSet, PetSet/StatefulSet、Job等,但归根结底都是在Pod启动时,在主容器启动前执行,做初始化工作。

应用场景

等待其它模块Ready

比如使用apache部署web服务,需要做一些准备工作(例如从git服务器上拉取代码、检查运行环境是否到位等),可以在运行Web服务的Pod里使用一个InitContainer,去执行准备工作,完成后Init Container结束退出,然后启动正在的apache容器。

做初始化配置

比如集群里检测所有已经存在的成员节点,为主容器准备好集群的配置信息,这样主容器起来后就能用这个配置信息加入集群。

例子

cat << EOF >lykops-deploy-init-container.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
 name: lykops-deploy-init-container
 labels:
   project: lykops
   app: init-container
   version: v1        
 annotations:
   pod.beta.kubernetes.io/init-containers:
    -name: apache-web,
     image: web:apache,
     command: ["sh", "httpd -t"]
spec:
 replicas: 1
 minReadySeconds: 30
 selector:
   matchLabels:
     name: lykops-deploy-init-container
     project: lykops
     app: init-container
     version: v1
 template:
    metadata:
     labels:
       name: lykops-deploy-init-container
       project: lykops
       app: init-container
       version: v1
   spec:
     containers:
     - name: webapache
       image: web:apache
       command: [ "sh", "/etc/run.sh" ]
       ports:
       - containerPort: 80
         name: http
         protocol: TCP
EOF
kubectl create -f lykops-deploy-init-container.yaml


转载于:https://www.cnblogs.com/lykops/p/7419931.html

最后

以上就是寒冷苗条为你收集整理的[置顶] kubernetes--Init Container的全部内容,希望文章能够帮你解决[置顶] kubernetes--Init Container所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部