前言

在 Kubernetes 中,containers被部署和管理在 Pod 中。Pod 是 Kubernetes 对象模型中最小和最简单的单元,可以被创建、部署和管理。在这里,您可以在单个 pod 中使用不同的容器类型来实现特定的功能。以下是在 Kubernetes 中常用的一些容器类型:

  • Init Container: 初始化容器
  • Sidecar Container: 边车容器
  • Ephemeral Container: 临时容器
  • Multi Container: 多容器

Init Container

一个Pod 可以在其中运行多个容器来运行应用程序,但它也可以有一个或多个 init 容器,在应用程序容器启动之前运行。Init 容器旨在在主应用程序容器启动之前运行初始化任务。它们可用于设置配置文件、初始化数据库或等待外部服务准备就绪等任务。Init 容器与常规容器完全相同,只是:

  • 初始化容器始终运行至完成。
  • 每个初始化容器必须在下一个初始化容器开始之前成功完成。

案例

apiVersion: v1
kind: Pod
metadata:
  name: nginx-init
  labels:
    app: nginx
spec:
  initContainers:
    #Initializing container 
    - name: init-container
      image: alpine
      command: ['sh', '-c', 'echo "<h1>This is from INIT container</h1>" >> /usr/share/nginx/html/index.html']
      volumeMounts:
        - name: data
          mountPath: /usr/share/nginx/html
  containers:
    # application container i.e., main container
    - name: app
      image: nginx
      volumeMounts:
        - name: data
          mountPath: /usr/share/nginx/html
  volumes:
    - name: data
      emptyDir: {}