1.简介
Pod可以包含多个容器,应用运行在这些容器里面,同时Pod也可以有一个或者多个先于应用容器启动的init容器。只有当init容器运行成功后才会运行应用容器。应用容器有开始与结束,在这个过程中就绪探针与存活探针会相继参与工作。下面我将详细讲解这些模块。
2.init容器
init容器与普通容器非常像,除了以下俩点:
<1> 它们总是运行到完成。
<2> Init 容器不支持 Readiness,因为它们必须在 Pod 就绪之前运行完成。
<3> 每个 Init 容器必须运行成功,下一个才能够运行。
<4> 如果 Pod 的 Init 容器失败,Kubernetes 会不断地重启该 Pod,直到 Init 容器成 功为止。然而,如果 Pod 对应的 restartPolicy 值为 Never,它不会重新启动。
init容器能够做什么呢?
<1> Init 容器可以包含一些安装过程中应用容器中不存在的实用工具或个性化代码。
<2> Init 容器可以安全地运行这些工具,避免这些工具导致应用镜像的安全性降低。
<3> 应用镜像的创建者和部署者可以各自独立工作,而没有必要联合构建一个单独的应用镜像。
<4> Init 容器能以不同于Pod内应用容器的文件系统视图运行。因此,Init容器 可具有访问 Secrets 的权限,而应用容器不能够访问。
<5> 由于 Init 容器必须在应用容器启动之前运行完成,因此 Init 容器提供了一 种机制来阻塞或延迟应用容器的启动,直到满足了一组先决条件。一旦前 置条件满足,Pod内的所有的应用容器会并行启动。
下面我们来使用一些init容器:
cd mainfest ##进入这个目录
vim init.yml ##创建文件
为了防止init容器解析不到本地的service,会通过/etc/resolv.conf里的路径到外网去解析。此时我们保证虚拟机不能上网。