Kubernetes(三)Pod详解

网友投稿 298 2022-09-08

Kubernetes(三)Pod详解

文章目录

​​Kubernetes(三)Pod详解​​

​​Pod结构​​​​Pod生命周期​​

​​Pod创建过程​​​​初始化容器&钩子函数​​​​容器探测&重启策略​​

​​Pod调度​​

Kubernetes(三)Pod详解

Pod结构

每个Pod中都可以包含一个或多个容器,可以分为两类:

用户应用程序所在的程序,数量可多可少Pause容器,每个Pod都会有一个根容器

监听pod的健康状态设置ip实现Pod容器通信

Pod生命周期

Pod生命周期是指Pod对象从创建到销毁的时间线范围

Pod创建运行初始化容器运行主容器

容器启动后执行钩子函数容器存活性探测,就绪性探测容器终止前探测

容器终止

在整个生命周期中,Pod会出现5种状态:

挂起(pending):APIServer已经创建了Pod资源对象,但他尚未被调度完成或者仍处于下载镜像的过程中运行中(Running):Pod已经被调度到某个节点上,并且Pod上所有容器都已经成功创建完成成功(succeeced):Pod中所有容器都已经被成功终止且不会被重启失败(Failed):容器终止过程中,存在至少一个容器终止失败。未知(unknown):apiserver无法正常获取到pod对象的状态信息

Pod创建过程

初始化容器&钩子函数

初始化容器主要是做一些主容器的前置工作,在主容器启动之前要运行的容器

初始化容器必须运行完成直至结束,若某初始化容器运行失败,那么k8s会重启直到他成功为止,而且初始化容器严格按照定义顺序执行,当且仅当前一个成功之后,后面一个才能运行

yaml配置实例:

钩子函数:

容器启动后钩子函数

容器创建之后执行,如果失败了会重启容器

容器终止前钩子函数

容器终止之前执行,执行成功之后容器将成功终止,在其完成之前会阻塞删除容器的操作

钩子处理器支持三种方式定义:

Exec,在容器内执行一次命令

lifecycle: poststart: exec: command: // 是一个数组,数组连起来就是完整命令 - -

TCPSocket,在当前容器内访问指定的socket

lifecycle: poststart: tcpsocket: port: // 端口号

HTTPGet:在当前容器内发起指定Http请求

lifecycle: poststart: path: // uri port: // 端口号 host: // ip scheme: // 协议

容器探测&重启策略

容器探测是检测容器内的实例是否正常工作,用于保证业务稳定性。

如果经过探测,容器实例状态不符合预期,k8s就会将该实例摘除

livenessProbe 存活性探针:检测当前应用实例是否处于正常运行状态

决定是否重启容器

readlnessProbe 就绪性探针:检测当前应用实例是否能正常接收请求

决定是否将请求转发给容器

具体配置和钩子函数差不多,lifecycle改为livenessProbe或者readlnessProbe,同样具备exec,TCPSocket,HttpGet三种方式

Pod具有三种重启策略:

Always:容器失效时,自动重启容器OnFailure:容器终止运行且退出码不为0时重启Never:不论如何,从不重启容器

容器重启采用阶梯式重启原则,每次重启完后,会延长一定时间再重启

Pod调度

K8s提供了4种调度策略:

nodeAffinity(Node亲和性):以Node为目标,解决Pod可以调度到哪些Node的问题podAffinity(pod亲和性):以pod为目标,解决pod可以和哪些已存在的pod部署在同一个拓扑域的问题podAntiAffinity(pod反亲和性):以pod为目标,解决pod不可以和哪些已存在的pod部署在同一个拓扑域的问题亲和性问题:

如果两个应用频繁交互,让这两个应用离得近,减少通信消耗如果应用采用多副本部署,就让这个应用的实例分离部署,提交服务高可用性

污点和容忍调度:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:“文具盲盒”流行隐藏哪些套路 专家:过度商业包装和营销是诱因!
下一篇:Kubernetes(二)资源概况
相关文章

 发表评论

暂时没有评论,来抢沙发吧~