K8S对象-Pod

1. Pod的设计动机

1.1 玩法

容器介于操作系统和应用之间,容器的推荐玩法是每个容器运行一个进程。

1.2 对外

Pod作为一个独立的部署单位,支持横向扩展和复制。共生(协同调度),命运共同体(例如被终结),协同复制,资源共享,依赖管理

1.3 对内

Pod内容器互相协作如下:

  • pod中的应用必须协调端口占用。
    每个pod都有一个唯一的IP地址,跟物理机和其他pod都处于一个扁平的网络空间中,它们之间可以直接连通。
  • Pod中应用容器的hostname被设置成Pod的名字。
  • Pod中的应用容器可以共享volume。
    Volume能够保证pod重启时使用的数据不丢失

1.4 Pod死掉

在以下几种情况下都会死:

  • 调度失败
  • 节点故障
  • 缺少资源
  • 节点维护
  • 用户主动干掉Pod

2. lnit容器

  • 概念
    Init 容器是一种专用的容器,在应用程序容器启动之前运行。总是运行到成功完成为止。
    每个 Init 容器都必须在下一个 Init 容器启动之前成功完成。

  • 作用

等待一个 Service 创建完成,通过类似如下 shell 命令:

for i in {1..100}; do sleep 1; if dig myservice; then exit 0; fi; exit 1

在启动应用容器之前等一段时间,使用类似 sleep 60 的命令

3. 镜像拉取策略

imagePullPolicy选项参数如下:

  • Always
    总是拉取新镜像
imagePullPolicy: Always
  • IfNotPresent
    本地有则使用本地镜像,不拉取
imagePullPolicy: IfNotPresent
  • Never
    只使用本地镜像,从不拉取
imagePullPolicy: Never

4. Pod状态和重启策略

4.1 Pod状态

  • Pending
    Pod已被K8S系统接收,但有一个或多个容器镜像尚未创建。等待时间包括调库Pod的时间和通过网络下载镜像的时间。
  • Running
    该Pod已经绑定到一个节点上,Pod中所有容器都已被创建。至少有一个容器正在运行,或者正处于启动或重启状态。
  • Successd
    Pod中所有容器都被成功终止并且不会再重启。
  • Failed
    Pod中所有容器都已经终止,并且至少有一个容器是因为失败终止。也就是说,容器以非0状态退出或被系统终止。
  • Unkonwn
    无法获取Pod的状态,通常是因为与Pod所属主机通信失败

4.2 容器重启策略

字段Pod.spec.restartPolicy

  • Always(默认)
    exitCode=任何数字,执行重启操作

  • OnFailure
    exitCode!=0,执行重启操作

  • Never
    exitCode=任何数字,不容器。

4.3 Pod状态对应重启策略

image.png


posted on   运维开发玄德公  阅读(18)  评论(0编辑  收藏  举报  

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示