k8s中的容器

目录

容器

容器的状态

  1. Running(运行中):容器正在运行并且正常工作。
  2. Waiting(等待中):容器正在等待某些条件满足,例如等待其他容器就绪、等待网络连接等。
  3. 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 容器的重要信息:

  1. 运行顺序: Init 容器首先会依次启动,直到它们全部完成或其中一个失败。然后,主应用程序容器才会启动。这有助于确保主应用程序容器在合适的环境下运行。
  2. 环境设置: Init 容器可以在主应用程序容器之前设置环境变量、配置文件或其他资源。这有助于准备主应用程序容器所需的运行环境。
  3. 数据准备: Init 容器可以从外部数据源(如持久卷、配置映射等)获取数据,并将其准备好供主应用程序容器使用。
  4. 依赖解决: 如果主应用程序容器需要等待某些外部服务或资源就绪,Init 容器可以负责等待这些资源准备就绪,然后才启动主应用程序容器。
  5. 单一进程: Init 容器通常只执行一个任务,以确保它们的运行时间较短,不会影响主应用程序容器的正常启动。
  6. 容器共享资源: Init 容器与主应用程序容器共享同一网络命名空间和存储卷,因此它们可以访问相同的资源。
相关推荐
angushine4 分钟前
让Docker端口映射受Firewall管理而非iptables
运维·docker·容器
孔令飞1 小时前
Go:终于有了处理未定义字段的实用方案
人工智能·云原生·go
玄明Hanko1 小时前
Quarkus+Docker最全面完整教程:手把手搞定Java云原生
后端·docker·云原生
SimonLiu0092 小时前
清理HiNas(海纳斯) Docker日志并限制日志大小
java·docker·容器
高峰君主5 小时前
Docker容器持久化
docker·容器·eureka
能来帮帮蒟蒻吗5 小时前
Docker安装(Ubuntu22版)
笔记·学习·spring cloud·docker·容器
言之。9 小时前
别学了,打会王者吧
java·python·mysql·容器·spark·php·html5
秦始皇爱找茬12 小时前
docker部署Jenkins工具
docker·容器·jenkins
hoho不爱喝酒14 小时前
微服务Nacos组件的介绍、安装、使用
微服务·云原生·架构
樽酒ﻬق16 小时前
Kubernetes 常用运维命令整理
运维·容器·kubernetes