下文基于kubernetes 1.5.2版本编写
概念
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
分享到:
相关推荐
Kubernetes需要网络插件实现Pod间的通信,CNI(Container Network Interface)是Kubernetes的标准网络接口。常用的CNI插件有Flannel、Calico等,这里以Flannel为例: ```bash kubectl apply -f ...
2. Container Runtime Interface (CRI):支持多种容器运行时,如Docker、containerd等。 3. Kube-proxy:处理网络规则,实现服务发现和网络策略。 三、下载与准备 要安装k8s Node节点,首先需要下载对应版本的...
Kubernetes-高级调度(CronJob、初始化容器InitContainer、污点与容忍、亲和力)
spec=KubernetesPodSpecArgs(containers=[KubernetesContainerArgs(name="my-container", image="nginx")]), ), ), namespace_id=namespace.id ) ``` 这段代码创建了一个名为`my-namespace`的命名空间,并在...
3. **初始化Master节点**:运行`kubeadm init`命令初始化Kubernetes集群,并配置kubectl连接。 4. **设置Worker节点**:在每个Worker节点上运行`kubeadm join`命令,将它们加入集群。 5. **配置网络插件**:选择并...
标题中的"container-systemd-init-tool-源码"表明这是一个与容器管理和Systemd初始化工具相关的开源项目。Systemd是Linux系统中广泛使用的初始化系统,负责管理系统的启动过程和服务。而容器技术,如Docker或...
用生成的目录 配置 错误处理 例子 示例-身份验证失败 示例-同步器失败 权限问题 缺少KV /保险柜引擎版本 Sidecar库kubernetes... 成功完成后,启动Init Container vault-kubernetes-synchronizer以将机密同步到Kubern
1. 初始化Terraform工作区 (`terraform init`). 2. 配置GCP凭证 (`gcloud auth configure-docker` 和 `gcloud auth application-default login`). 3. 为GKE集群配置变量 (`terraform apply -var-file=terraform....
- **阿里云ACK (Alibaba Cloud Container Service for Kubernetes)**:阿里云的托管Kubernetes服务,提供了无缝集成阿里云服务的能力。 - **AWS EKS (Elastic Kubernetes Service)**:AWS 的Kubernetes托管服务,...
"container-systemd-init-tool: W2容器系统初始化工具包" 是一个专为容器系统设计的初始化工具,特别针对W2容器环境。它主要用来帮助配置和管理在容器内运行的服务,确保它们能正确启动和与宿主机的systemd系统协同...
sudo kubeadm init --kubernetes-version=v1.11.0 --pod-network-cidr=10.244.0.0/16 ``` 初始化过程中会下载所有必需的镜像,如果镜像已经提前下载,则可以跳过这一步。 ##### 2.2 配置 kubectl 认证信息 ...
4. 编写initContainer脚本(备用),根据hostname判断是master还是slave,进而执行对应的命令 5. 编写pv和pvc脚本,申请磁盘资源(通过storageClass自动进行pv/pvc的创建) 6. 编写headless service脚本,配置mysql...
在压缩包“keyvault-init-container-master”中,我们可以预期找到项目源码、配置文件、README文档、示例或者部署脚本等资源。这些资源通常会包含以下内容: 1. **源码**:实现从Key Vault检索数据并注入到...
这个脚本的内喷射initContainer到用户的K8S配置。 此initContainer设置iptables规则,以将请求代理到 。 它注入以下initContainer(如果您不想使用脚本,可以将其手动添加到配置中)。 该脚本使用pod.beta....
接着,安装必要的依赖项,包括Docker、Kubernetes组件(如kubelet、kubeadm和kubectl)以及网络插件CNI(Container Network Interface): ```bash sudo apt-get install -y apt-transport-...
安装一个CNI(Container Network Interface)插件,例如Calico或Flannel,以便在Pod之间提供网络连接。 11. **设置kubectl**: 为了能够在Master节点上通过kubectl命令行工具与集群交互,我们需要下载并配置kube...
init调试本地主机kube-debug -localhost调试目标容器(容器ID为'9a64c7a0d6bd'),并在本地主机上打开tcp-38080的调试端口kube-debug -container “ 9a64c7a0d6bd” -hostport 38080查询'testns'名称空间kube-debug...
博客配套资源包下载,demo4shl.war,kubernetes的Container&initContainer
1. **设置环境**:在每个节点上安装并配置Docker,确保网络设置正确,例如使用CNI(Container Network Interface)插件如Calico或Flannel来处理容器间的通信。 2. **下载二进制文件**:从Kubernetes官方网站获取...