Kubernetes init容器介绍

作者 : 慕源网 本文共2136个字,预计阅读时间需要6分钟 发布时间: 2023-03-3 共111人阅读

Kubernetes 初始容器介绍

Kubernetes的init容器是指可以容纳系统或软件的容器,这些软件在镜像中不存在。我们可以将init容器描述为与容器数组相等的Pod语句。在Kubernetes中,init容器被用于执行配置逻辑,生成所需的用户帐户,执行数据库操作,并为安排在Pod中的主要应用程序生成数据库模式。这意味着init容器是在同一Pod中的其他容器之前启动和执行的容器。

Kubernetes 初始容器概述

Kubernetes中的init container是指在其余pod安装之前执行任务的资源。一个pod可以同时携带应用程序容器和init容器,并且它允许我们承认设置脚本和绑定代码。

它也可以带来一些好处,这些好处不需要添加到应用程序容器中,但是对于镜像安全性来说是必要的,它还有自定义代码,这些代码在应用程序镜像中不可用,这意味着不需要从另一个镜像创建镜像,而是只需利用其工具即可。而且,init容器必须在其他容器启动之前完成其工作,因此我们可以说它提供了一种简单的方法来阻止或延迟应用程序容器的启动,直到某些先决条件得到连接。

如何使用初始容器?

既然我们已经了解了初始容器具有不同的镜像,那么让我们了解如何使用初始容器:

初始容器保存转换后的代码或应用程序镜像中不可用的自定义代码。 在设置过程中,它使用诸如 sed、awk、Python 或 dig 等工具,因此无需从其他镜像构建镜像。 对于构建任何应用程序的镜像,应用程序镜像构建器和部署器无需一起工作,它们可以独立工作。 在同一个 Pod 中,初始容器可以以其不同的视图运行于文件系统中,这也允许阻止应用程序容器,直到前面的条件满足,一旦条件得到满足,Pod 也可以开始启动,它们提供应用程序容器所没有的限制。 初始容器在应用程序容器之前开始运行,如果可以安全地运行定制代码,则不会影响应用程序容器的安全性。

示例

让我们看一个简单的 Pod 示例,其中有两个初始容器,第一个容器是 ‘myservice’,另一个是 ‘mydb’,当这些容器完成后,Pod 就开始启动了。

apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: pixabay
command: ['sh', '-c', 'echo The application was debugging! && sleep 3600'] initContainers:
- name: init-myservice
image: pixabay
command: ['sh', '-c', 'echo The application was debugging! && sleep 3600'] initContainers:
- name: init-mydb
image: pixabay
command: ['sh', '-c', 'until the myservice; do echo waiting for myservice; sleep 2; done;']

在上面的例子中,我们首先要创建 init container 的 YAML 文件,然后创建名为 ‘myservice’ 的服务的 YAML 文件,最后需要创建名为 ‘mydb’ 的服务的 YAML 文件。在这个例子中,我们使用了两个 init container,它们具有名称、镜像和命令。

现在我们需要运行命令来生成 myapp-pod,

  • 当我们运行命令 ‘$ kubectl apply -f myapp.yml’ 时,我们可以得到类似 ‘pod/myapp-pod created’ 的输出
  • 要生成服务,我们需要运行命令 ‘$ kubectl create -f mydb.yml’ 和 ‘$ kubectl create -f myservice.yml’
  • 如果我们想要检查 pod 的状态,我们需要运行命令 ‘$ kubectl get pods’。

kubectl 将保持其运行状态,直到网络和存储准备就绪以启动 init container,然后 pod 的 init container 可以在 pod 的 spec 中看到,并且每个 container 都必须在下一个 container 开始之前退出,直到所有的 container 都准备就绪,pod 才能处于 ready 状态。

Kubernetes中的请求和限制

请求和限制是Kubernetes中可用于控制CPU和内存的工具。请求是容器决定我们可以从中获取什么资源的方式,如果容器请求资源,则Kubernetes仅在可以从该资源获取的节点上运行它,而限制确保容器不会超过特定的值,需要注意的是限制值不能低于请求值。

限制和请求可以根据容器使用,但是Pod一次只能承载一个容器,我们可以在Pod中看到具有多个容器的情况,Pod中每个容器都可以获取其自身的独立限制和请求,然而,Pod始终以组的形式运行,因此我们需要将每个容器的限制和请求一起设置,以获得Pod的组合值。要检查是否可以进行限制或请求,我们需要在容器级别和命名空间级别设置配额。

本文总结了Kubernetes在应用程序启动时提供容器运行环境,并在部署时提供将系统文件复制到容器文件的工具,因此我们可以了解Kubernetes init container的概念。


慕源网 » Kubernetes init容器介绍

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录