【赵渝强老师】K8s中Pod中的初始化容器

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Kubernetes的Pod包含业务容器、基础容器、初始化容器和临时容器。初始化容器在业务容器前运行,用于执行必要的初始化任务。本文介绍了初始化容器的作用、配置方法及优势,并提供了一个示例。

b064.png

Kubernetes的Pod由一个或者多个容器组成,这里的容器通常指的是运行应用程序的业务容器。但是Pod中除了业务容器外,还有基础容器、初始化容器和临时容器。

   

初始化容器晚于基础容器运行,但先于业务容器运行。如果Pod的初始化容器运行失败,在默认情况下Kubernetes会不断尝试重启Pod,直到初始化容器运行成功。如果将Pod的配置参数“restartPolicy”设置为“Never”,这时候Kubernetes将不会执行重启的动作。

   

如果要将Pod中的容器指定为初始化容器,可以通过在“spec”中添加“initContainers”字段。一个Pod可以指定多个初始化容器,它们会按顺序逐个运行。每个初始化容器必须运行成功,下一个才能够运行。当所有的初始化容器运行完成后,Kubernetes才会开始执行业务容器从而运行应用程序。

   

视频讲解如下:

   

下面给出一个初始化容器的示例。

(1)创建initcontainer.yaml文件,并输入下面的内容。

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp-container
    image: busybox:1.28
    command: ['sh', '-c', 'echo The app running! && sleep 5']
  initContainers:
  - name: init-myservice
    image: busybox:1.28
    command: ['sh', '-c', 'echo The init-myservice running! && sleep 5']
  - name: init-mydb
    image: busybox:1.28
    command: ['sh', '-c', 'echo The init-mydb running! && sleep 5']


(2)执行下面的语句创建Pod。

kubectl apply -f initcontainer.yaml


(3)Pod创建成功后,使用describe查看具体的输出信息,如下图所示。

kubectl describe -f initcontainer.yaml


 

通过“Message”的输出信息可以看成,Kubernetes首先启动了两个初始化容器“init-myservice”和“init-mydb”,最后启动了业务容器“myapp-container”。

 

因为初始化容器与业务容器分离,因此它具有以下的优势:

  • 在初始化容器中可以提前安装业务容器中使用到的工具或者运行一些初始化的脚本。
  • 将与应用程序中依赖的工具和脚本分离到初始化容器中,可以避免这些工具导致应用镜像的安全性降低。
  • 开发人员可以独立进行镜像的创建和部署,而不需要将所有的组件联合构建成一个单独的应用镜像。
  • 初始化容器可以独立访问Kubernetes中的一些敏感信息,如:Secrets。
  • 由于初始化容器必须在业务容器之前执行完成,因此可以利用初始化容器来阻塞或延迟业务容器的启动,直到满足了一组先决条件。




相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
19小时前
|
存储 Kubernetes Docker
【赵渝强老师】Kubernetes中Pod的基础容器
Pod 是 Kubernetes 中的基本单位,代表集群上运行的一个进程。它由一个或多个容器组成,包括业务容器、基础容器、初始化容器和临时容器。基础容器负责维护 Pod 的网络空间,对用户透明。文中附有图片和视频讲解,详细介绍了 Pod 的组成结构及其在网络配置中的作用。
【赵渝强老师】Kubernetes中Pod的基础容器
|
20小时前
|
运维 Kubernetes Shell
【赵渝强老师】K8s中Pod的临时容器
Pod 是 Kubernetes 中的基本调度单位,由一个或多个容器组成,包括业务容器、基础容器、初始化容器和临时容器。临时容器用于故障排查和性能诊断,不适用于构建应用程序。当 Pod 中的容器异常退出或容器镜像不包含调试工具时,临时容器非常有用。文中通过示例展示了如何使用 `kubectl debug` 命令创建临时容器进行调试。
|
20小时前
|
Kubernetes 调度 容器
【赵渝强老师】K8s中Pod中的业务容器
Pod 是 Kubernetes 中的基本调度单元,由一个或多个容器组成。除了业务容器,Pod 还包括基础容器、初始化容器和临时容器。本文通过示例介绍如何创建包含业务容器的 Pod,并提供了一个视频讲解。示例中创建了一个名为 "busybox-container" 的业务容器,并使用 `kubectl create -f firstpod.yaml` 命令部署 Pod。
|
3月前
|
Kubernetes API 数据中心
在K8S中,pause容器作用是什么?
在K8S中,pause容器作用是什么?
|
6月前
|
Kubernetes 容器 Perl
k8s学习-CKA真题-一个Pod封装多个容器
k8s学习-CKA真题-一个Pod封装多个容器
80 0
|
11月前
|
Kubernetes 应用服务中间件 nginx
k8s教程(pod篇)-初始化容器
k8s教程(pod篇)-初始化容器
160 0
|
Ubuntu Docker 容器
容器学习实验(1)——容器的启动和操作
本文介绍了容器学习实验的基本操作和启动方法。详细说明了容器的启动步骤和注意事项,介绍了容器操作的基本方法和注意事项。通过本文的学习,读者可以掌握容器学习实验的基本技能和知识。
容器学习实验(1)——容器的启动和操作
|
弹性计算 容器
容器学习实验(3)——查看容器系统信息
本文介绍了容器学习实验的基本操作和启动方法。详细说明了容器的启动步骤和注意事项,介绍了容器操作的基本方法和注意事项。通过本文的学习,读者可以掌握容器学习实验的基本技能和知识。
|
Ubuntu Shell Linux
容器学习实验(2)——容器的快速启动方式
本文介绍了容器学习实验的基本操作和启动方法。详细说明了容器的启动步骤和注意事项,介绍了容器操作的基本方法和注意事项。通过本文的学习,读者可以掌握容器学习实验的基本技能和知识。
|
Kubernetes Cloud Native 安全
【探索 Kubernetes|容器基础进阶篇 系列1】容器的本质是进程
大家好,我是秋意零。 😈 CSDN作者主页 • 😎 博客主页 👿 简介 • 👻 普通本科生在读 • 在校期间参与众多计算机相关比赛,如:🌟 “省赛”、“国赛”,斩获多项奖项荣誉证书 • 🔥 各个平台,秋意零/秋意临 账号创作者 • 🔥 云社区 创建者 点赞、收藏+关注下次不迷路! 欢迎加入云社区
197 0
下一篇
无影云桌面