目录
容器
容器的状态
- Running(运行中):容器正在运行并且正常工作。
- Waiting(等待中):容器正在等待某些条件满足,例如等待其他容器就绪、等待网络连接等。
- Terminated(已终止):容器已经完成工作并终止。这可能是正常的完成,也可能是出现错误导致终止。
容器的重启策略
Pod 的 spec
中包含一个 restartPolicy
字段,其可能取值包括 Always、OnFailure 和 Never。默认值是 Always。
restartPolicy
适用于 Pod 中的所有容器。restartPolicy
仅针对同一节点上 kubelet
的容器重启动作。当 Pod 中的容器退出时,kubelet
会按指数回退方式计算重启的延迟(10s、20s、40s、...),其最长延迟为 5 分钟。 一旦某容器执行了 10 分钟并且没有出现问题,kubelet
对该容器的重启回退计时器执行重置操作。
pause容器
启动一个pod最先会创建一个pause,pause容器会把所有需要的namespace都创建好,业务app会直接跟他共享
"pause" 容器是一个特殊的辅助容器,它在每个 Pod 内隐式地存在。"pause" 容器没有实际的应用程序逻辑,它的存在是为了管理 Pod 的网络命名空间和共享存储卷。
每个 Kubernetes Pod 都有一个共享的网络命名空间,其中包括网络接口和 IP 地址。为了实现这种网络隔离,Kubernetes 使用了 "pause" 容器。这个容器负责维护 Pod 的网络设置,并在其他容器之间共享网络命名空间,使它们可以相互通信。
此外,"pause" 容器还为 Pod 提供了共享存储卷。其他容器可以挂载这个共享存储卷,以在 Pod 内部共享文件。
以下是一些关于 "pause" 容器的重要信息:
- 镜像: "pause" 容器使用一个特殊的轻量级镜像,通常是 "k8s.gcr.io/pause"。
- 进程: "pause" 容器没有运行的实际进程,它的存在只是为了保持网络命名空间和存储卷的隔离。
- 网络命名空间: 每个 Pod 的其他容器都会与 "pause" 容器共享同一个网络命名空间,使它们可以在同一网络中通信。
- 存储卷: "pause" 容器为 Pod 提供了一个文件系统,使其他容器可以在其中创建文件,以实现在 Pod 内部的共享存储。
- 资源消耗: "pause" 容器的资源消耗非常小,因为它没有实际运行的进程。
总的来说,"pause" 容器是 Kubernetes 中的一个关键概念,它为 Pod 提供了网络隔离和共享存储卷的功能。在大多数情况下,开发人员不需要直接操作 "pause" 容器,因为 Kubernetes 会在创建 Pod 时自动添加它。
init容器
Init 容器(Initialization Container)是在主应用程序容器启动之前运行的特殊类型的容器。它们用于执行初始化任务,为主应用程序容器提供必要的环境、配置或数据。Init 容器可以确保主应用程序容器在启动之前满足一些前置条件。
以下是一些关于 Init 容器的重要信息:
- 运行顺序: Init 容器首先会依次启动,直到它们全部完成或其中一个失败。然后,主应用程序容器才会启动。这有助于确保主应用程序容器在合适的环境下运行。
- 环境设置: Init 容器可以在主应用程序容器之前设置环境变量、配置文件或其他资源。这有助于准备主应用程序容器所需的运行环境。
- 数据准备: Init 容器可以从外部数据源(如持久卷、配置映射等)获取数据,并将其准备好供主应用程序容器使用。
- 依赖解决: 如果主应用程序容器需要等待某些外部服务或资源就绪,Init 容器可以负责等待这些资源准备就绪,然后才启动主应用程序容器。
- 单一进程: Init 容器通常只执行一个任务,以确保它们的运行时间较短,不会影响主应用程序容器的正常启动。
- 容器共享资源: Init 容器与主应用程序容器共享同一网络命名空间和存储卷,因此它们可以访问相同的资源。