k8s Pod Init 容器

简介

Init 容器是一种特殊容器,在Pod内的应用容器启动之前运行。Init容器可以包括一些应用镜像中不存在的实用工具和安装脚本。

Init容器启动流程

如图可以看到Pod中的Init容器启动流程

k8s Pod Init 容器

Init容器一个接一个地运行,并且必须在pod的主容器启动之前全部成功完成。

Init容器使用场景

  • 初始化 pod 主容器使用的卷中的文件。包括从安全证书存储中检索主容器使用的证书和私钥、生成配置文件、下载数据等
  • 初始化 pod 的网络系统。由于 pod 的所有容器共享一样的网络命名空间,因此网络接口和配置,init 容器对其所做的任何更改也会影响主容器
  • 延迟 Pod 的主容器的启动,直到满足前提条件。例如,如果主容器在容器启动之前依赖于另一个可用的服务,则 init 容器可以阻塞,直到该服务准备就绪
  • 通知外部服务 pod 即将开始运行。在启动应用程序的新实例时必须通知外部系统的特殊情况下,可以使用 init 容器来传递此通知

使用Init容器

在 pod 清单中,init 容器定义超级简单,initContainers在 spec 部分的字段中定义,就像在其containers字段中定义常规容器一样

  • demo

apiVersion: v1
kind: Pod
metadata:
  name: kubia-init
spec:
  initContainers:
  - name: init-demo
    image: luksa/init-demo:1.0
  - name: network-check
    image: luksa/network-connectivity-checker:1.0
  containers:
  - name: kubia
    image: luksa/kubia:1.0
    ports:
    - name: http
      containerPort: 8080
  - name: envoy
    image: luksa/kubia-ssl-proxy:1.0
    ports:
    - name: https
      containerPort: 8443
    - name: admin
      containerPort: 9901

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...