k8s-day5-名词解释:pod

Posted linux言叙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s-day5-名词解释:pod相关的知识,希望对你有一定的参考价值。

2.3 Pod

Pod是Kubernetes创建或部署的最小/最简单的基本单位,一个Pod代表集群上正在运行的一个进程。是Kubernetes的基本操作单元,也是应用运行的载体。

一个Pod封装一个应用容器(也可以有多个容器),存储资源、一个独立的网络IP以及管理控制容器运行方式的策略选项。Pod代表部署的一个单位Kubernetes中单个应用的实例,它可能由单个容器或多个容器共享组成的资源。

整个Kubernetes系统都是围绕着Pod展开的,比如如何部署运行Pod、如何保证Pod的数量、如何访问Pod等。另外,Pod是一个或多个相关容器的集合

 

2.3.1 Kubernetes中的Pod使用可分两种主要方式

Pod中运行一个容器。“one-container-per-Pod”模式是Kubernetes最常见的用法; 在这种情况下,你可以将Pod视为单个封装的容器,但是Kubernetes是直接管理Pod而不是容器。

Pods中运行多个需要一起工作的容器。Pod可以封装紧密耦合的应用,它们需要由多个容器组成,它们之间能够共享资源,这些容器可以形成一个单一的内部service单位:一个容器共享文件,另一个“sidecar”容器来更新这些文件。Pod将这些容器的存储资源作为一个实体来管理。

 

2.3.2 Pod与容器

Docker中,容器是最小的处理单元,增、删、改、查的对象是容器,容器是一种虚拟化技术,容器之间是隔离的,隔离是基于Linux Namespace实现的。而在Kubernetes中,Pod包含一个或者多个相关的容器,Pod可以认为是容器的一种延伸扩展,一个Pod也是一个隔离体,而Pod内部包含的一组容器又是共享的(包括PID、Network、IPC、UTS)。除此之外,Pod中的容器可以访问共同的数据卷来实现文件系统的共享

PID 命名空间(同一个Pod中应用可以看到其它进程)

IPC 命名空间(同一个Pod中的应用可以通过VPC或者POSIX进行通信)

UTS 命名空间(同一个Pod中的应用共享一个主机名称)

 

注:在kubernetes中,镜像的下载策略为:

Always:每次都下载最新的镜像

Never:只使用本地镜像,从不下载

IfNotPresent:只有当本地没有的时候才下载镜像

Pod被分配到Node之后会根据镜像下载策略进行镜像下载,可以根据自身集群的特点来决定采用何种下载策略。无论何种策略,都要确保Node上有正确的镜像可用。

 

2.3.3 Pod生命周期

我们很少会直接在kubernetes中创建单个Pod。因为Pod的生命周期是短暂的,用后即焚的实体。当Pod被创建后(不论是由你直接创建还是被其他Controller),都会被Kuberentes调度到集群的Node上。直到Pod的进程终止、被删掉、因为缺少资源而被驱逐、或者Node故障之前这个Pod都会一直保持在那个Node上。

重启Pod中的容器跟重启Pod不是一回事。Pod只提供容器的运行环境并保持容器的运行状态,重启容器不会造成Pod重启。

Pod不会自愈。如果Pod运行的Node故障,或者是调度器本身故障,这个Pod就会被删除。同样的,如果Pod所在Node缺少资源或者Pod处于维护状态,Pod也会被驱逐。Kubernetes使用更高级的称为Controller的抽象层,来管理Pod实例。虽然可以直接使用Pod,但是在Kubernetes中通常是使用Replication Controller来管理Pod的。

2.3.4 Pod状态:

1)Pending(挂起):Pod创建已经提交给k8s,但是因为某种原因不能顺利创建,例如下载镜像慢,调度不成功等。

2)Running:Pod已经绑定到一个节点上了,并且所包含的容器镜像都已创建完成,并已经成功运行

3)Secceeded:Pod中的所有容器都已经成功终止,不能重新启动。

4)Failed:Pod中所有的容器均已经终止,且至少有一个容器已经在故障中终止。

5)Unkown:由于某种原因apiserver无法获取到Pod的状态。通常是由于Master与pod所在的主机失去连接了。

 

2.3.5 Node、pod、容器之间的关系:

Container(容器)是一种便携式、轻量级的操作系统级虚拟化技术,它使用 NameSpace 隔离不同的软件运行环境,并通过镜像自包含软件的运行环境,从而使得容器可以很方便的在任何地方运行。由于容器体积小且启动快,因此可以在每个容器镜像中打包一个应用程序,一对一的关系。

Kubernetes 使用 Pod 来管理容器,每个 Pod 可以包含一个或多个紧密关联的容器一对多的关系

Node 是 Pod 真正运行的主机,可以是物理机,也可以是虚拟机,也称为宿主机。为了管理 Pod,每个 Node 节点上至少要运行docker 、kubelet 服务。每个node上可以运行多个pod,一对多关系。

应用程序运行在docker(容器)环境,pod来管理一个或多个docker,一个或者多个pod运行在一个或者多个node上。

以上是关于k8s-day5-名词解释:pod的主要内容,如果未能解决你的问题,请参考以下文章

k8s-day12-名词解释:Volume(共享存储)

k8s-day2-名词解释:master

k8s-day3-名词解释:master

cloudstack4.5私有云集群规划与安装

您可能在 Ruby 解释器或扩展库中遇到了错误

运行 pod setup 给我“错误的解释器:没有这样的文件或目录”错误