Kubernetes Pod 介绍
Kubernetes Pod 介绍
Pod是在K8S集群中运行部署应用或服务的最小单元,Pod由一个或多个容器组成。多个容器在一个Pod中共享网络地址和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务。
Pod是Kubernetes的最重要概念,每一个Pod都有一个特殊的被称为“根容器”的Pause容器。Pause容器对应的镜像属于Kubernetes平台的一部分,除了Pause容器,每个Pod还包含一个或多个紧密相关的用户业务容器。
Pod 的存在意义
K8S不会直接处理容器,而是通过Pod,Pod是由一个或多个容器组成。创建容器使用docker,一个docker对应一个容器,一个容器运行一个应用进程。Pod的存在主要是为了更方便的交互:
- 两个或多个应用之间进行交互
- 网络之间的调用【通过127.0.0.1 或 socket】
- 两个应用之间需要频繁调用
Pod是K8S集群中所有业务类型的基础,可以把Pod看作运行在K8S集群上的小机器人,不同类型的业务就需要不同类型的小机器人去执行。目前K8S的业务主要可以分为以下几种
- 长期伺服型:long-running
- 批处理型:batch
- 节点后台支撑型:node-daemon
- 有状态应用型:stateful application
Pod中镜像拉取策略
拉取策略主要分为了以下几种:
- IfNotPresent:默认值,镜像在宿主机上不存在才拉取
- Always:每次创建Pod都会重新拉取一次镜像
- Never:Pod永远不会主动拉取这个镜像
Pod的重启策略
Pod中包含了很多个容器,假设某个容器出现问题了,那么就会触发Pod重启机制。重启策略主要分为以下三种:
- Always:当容器终止退出后,总是重启容器,默认策略 【nginx等,需要不断提供服务】
- OnFailure:当容器异常退出(退出状态码非0)时,才重启容器,正常退出时,不会重启。
- Never:当容器终止退出,从不重启容器 【批量任务】
注:当控制器是job或者是cronjob时,重启策略只能是OnFailure和Never。