java系统找不到指定文件怎么解决
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~