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的主要内容,如果未能解决你的问题,请参考以下文章