pod入门与实战全套

109 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第11天,点击查看活动详情

k8s核心资源Pod介绍

K8s官方文档:kubernetes.io/ K8s中文官方文档: kubernetes.io/zh/ K8s Github地址:github.com/kubernetes/

1.Pod是什么

官方文档:kubernetes.io/zh-cn/docs/…

Pod是kubernetes中最小的调度单元,k8s是通过定义一个Pod的资源,然后再Pod里面运行容器,容器需要指定一个镜像,这样就可以用来运行具体的服务。 一个pod封装了一个容器(也可以封装多个容器),pod里的容器共享存储、网络等。也就是说,应该把整个pod看作虚拟机,然后每个容器相当于运行在虚拟机 上的进程。

图片.png

pod是需要调度到k8s集群的工作节点来运行的,具体调度到哪个节点,是根据scheduler进行一系列的算法来实现调度的

pod相当于一个逻辑主机:比方我们想部署一个tomcat应用,如果不用容器,我们需要部署到物理机、虚拟机或者云主机上;那么kubernetes出现之后,我们就可以定一个pod资源,在pod里定义一个tomcat容器,pod充当的是逻辑主机的角色。

2.Pod如果管理多个容器呢

pod中可以同时运行多个容器。同一个pod中的容器会自动的分配到同一个node上。同一个pod中的容器共享资源、网络环境。在一个pod中同时运行多个容器是一种比较高级的用法,只有当你的容器需要紧密配合协作的时候才考虑用这种模式。

3.多容器pod的使用场景

Sidecar containers "帮助"主容器,比如日志文件监视器.一个日志监视器构建完成以后,可以由不同的应用来使用.另一个示例是sidecar 容器为主容器加载文件和运行需要的数据。

代理,桥接和适配器 使主容器与外部世界联通.比如Apache http服务器或者nginx可承载静态文件.也可以做为一个web的反向代理服务器。 你可以使用一个pod来承载一个多层应用(比如wordpress),但是更建议使用不同的pod来承载不同的层,因这这样你可以为每一个层单独扩容并且把它们分布到集群的不同节点上。

4.pod存储

创建pod的时候可以指定挂载的存储卷。Pod中的所有容器都可以访问共享卷,允许这些容器共享数据。Pod只有挂载持久性数据卷,Pod重启之后数据还是会存在的。

5.Pod工作方式

在kubernetes中,所有的资源都可以使用一个yaml文件来创建,创建pod也可以使用yaml配置文件,或者使用kubectl run在命令行创建Pod(不常用)

6.Pod的生命周期

一般将pod对象从<<创建到终止>>的这段时间范围成为pod的生命周期

pod的生命周期过程:

1.首先运行初始化容器(init container),当初始化容器运行成功后才能运行主容器,初始化容器运行失败整个pod都将是失败状态

2.运行初始化容器后,在运行主容器(main container)

3.运行主容器后,会执行容器启动后的钩子函数(post start),这个钩子函数包含容器的启动命令等等

4.钩子函数运行成功后,会进行容器的存活性探测(liveness probe),就绪性探测(readiness probe)

5.当pod终止时,会执行容器终止前钩子函数(pre stop)

7.pod会出现的5种状态

挂起(Pending):apiserver已经创建了pod资源对象,但是它尚未被调度完成或者处于下载镜像的过程

运行中(Running):pod已经被调度至某工作节点,并且所有容器都已经被kubelet创建完成

成功(succeeded):pod中的所有容器都已经成功终止并且不会被重启,相当于一个pod生命周期终止

失败(Failed):所有容器都已经终止,但至少有一个容器终止失败,即容器返回了非9值的退出状态

未知(Unknown):apiserver无法正常获取到pod对象的状态信息,通常由网络通信失败导致

8.自主式pod

自主式Pod:这种Pod本身是不能自我修复的,当Pod被创建后(不论是由你直接创建还是被其他Controller),都会被Kuberentes调度到集群的Node上。直到Pod的进程终止、被删掉、因为缺少资源而被驱逐、或者Node故障之前这个Pod都会一直保持在那个Node上。Pod不会自愈。如果Pod运行的Node故障,或者是调度器本身故障,这个Pod就会被删除。

9.控制器管理的Pod

常见的管理Pod的控制器:Replicaset、Deployment、Job、CronJob、Daemonset、Statefulset

控制器管理的Pod可以确保pod始终维持在指定的副本数运行