当前位置: 首页 > news >正文

k8s yaml文件pod的生命周期

Pod是k8s中最小限额资源管理组件,也是最小化运行容器化的应用的资源管理对象。

Pod是一个抽象的概念,可以理解为一个或者多个容器化应用的集合。

在一个pod当中运行一个容器是最常用的方式。

在一个pod当中同时运行多个容器,在一个pod当中可以同时封装几个需要耦合的相互协作的容器。这些多个容器共享资源,也可以互相协作组成一个service单位。

不论运行一个容器还是多个容器。k8s管理的都是pod而不是容器。

一个pod内的容器,必须都运行在同一个节点上。基于现代容器技术的要求,一个pod运行一个容器,一个容器只运行一个进程。

横向扩展,方便扩缩容

解耦,一个pod内运行多个容器,耦合度太高,一但一个进程失败,整个pod将全部失败,实现解耦。基于pod可以创建多个副本实现高可用和负载均衡。管理方便简单直观。

Pod内的容器共享资源。共享机制:pause底层基础容器来提供共享资源的机制。

Pause容器是基础容器,也可以称为父容器,管理pod内容器的共享操作。

Pause还可以管理容器的生命周期

k8s提供了pause容器两大功能:

  1. 为pod内的所有容器提供一个命名空间
  2. 启动容器的pid(进程号)命名空间,每个pod中都作为pid唯一的进程(init进程)。回收僵尸进程。
  3. 创建pod时,先创建pause容器,然后拉取镜像,形成pod。

第一步:master节点发出指令,pod使用的镜像nginx。Pod的副本数

第二部:kube-scheduler来分配执行的node节点

第三部:node节点的kubelet收到master指令。拉pause,拉nginx:1.22 pod1

第四部:pause容器先启动,提供命名空间,进程管理pid1 来为pod内的容器提供共享服务以及 容器的进程管理。

Pause容器共享两种资源

网络:每个pod都会被分配一个集群内部的唯一IP地址,pod内的容器共享网络。Pod在集群内部的ip地址和端口。

Pod内部的容器可以使用localhost互通通信。Pod的中容器与外部通信时,从共享的资源当中进行分配,宿主机的端口映射。

Pause容器共享两种资源

网络:每个pod都会被分配一个集群内部的唯一IP地址,pod内的容器共享网络。Pod在集群内部的ip地址和端口。

Pod内部的容器可以使用localhost互通通信。Pod的中容器与外部通信时,从共享的资源当中进行分配,宿主机的端口映射。

 总结:

每个pod都有一个基础容器pause容器。

Pause容器对应的镜像属于k8s集群的一部分。创建集群就会有pause这个基础镜像。

Pod里面包含看一个或者多个相关的容器(应用)

Pod外再设置一个基础镜像:

  1. pod内部有一组容器,挂了一个,就算这个pod失效了吗? 引入pause禁止,代表整个容器的组的状态。可以解决对pod内部容器整体状态的判断。
  2. Pod内的容器共享ip 共享volume,解决了容器内网络通信的问题,解决了容器内部文件共享问题。

Pod的生命周期状态

  1. pending  挂起  pod已被创建,但是尚未被分配到运行的node节点(节点上资源不够,需要等待其他pod的调度)
  2. running:运行中。Pod已经被分配到了node节点,pod内部的所有容器都已经启动,运行状态正常,稳定。
  3. complete:容器内部的进程运行完毕,正常退出。没有发生错误。
  4. faild:pod中的容器非正常退出。发生错误,需要通过查看详情和日志来定位问题。
  5. UNkown:由于某些原因,k8s集群无法获取pod的状态。APIserver出了问题。
  6. terminating:终止中 ,pod正在被删除,里面的容器正在终止。终止过程中,资源回收,垃圾清理,以及终止过程中需要执行的命令。

创建pod的容器分类:

  1. 基础容器:pause
  2. Init容器(初始化容器):init c

    1和2这个过程中。Pod的状态就是init:  0/3

  1. 业务容器

init容器的作用:

环境变量      

可以在创建的过程中为业务容器定制好相关的代码和工具

Init容器独立与业务容器,他是单独构建的一个镜像,对业务容器不产生任何安全影响。

Init容器能以不同于pod内应用容器的文件系统视图运行。Secrets的权限。应用容器无法访问sercerts的权限。

总结:init容器提供了应用容器运行之前的先决条件,提供了一种阻塞或者延迟机制来控制应用容器的启动,只有前置条件满足,才会创建pod的应用容器。

  1. 在pod的启动过程中,容器按照初始化容器先启动,每个容器必须在下一个容器启动之前,要成功退出。
  2. 如果运行失败,会按照容器的重启策略进行指定动作。RestartPolicy  Always never  onFailure(非正常退出才会重启)
  3. 所有的init容器没有成功之前,pod是不会进入ready状态。

Init容器与service无法。不能对外提供访问。

  1. 如果重启pod,所有的init容器一定会重新执行
  2. 如果修改init容器的spec(参数),只限于image,其他的修改字段 都不生效(基于deploment。
  3. 每个容的名称都要唯一,不能重复。

Pod的重启策略:

总结:

Pause容器:底层容器/基础容器

提供pod内容器的网络和存储共享,以及pod内容器退出之后的资源回收。、

Init容器:人为设定的,业务容器启动之间的必要条件。

Pod的生命周期:

  1. pause基础容器
  2. Init容器----全部成功退出-------业务容器
  3. Poststart  prestop  容器的钩子

启动时命令和退出时的命令

  1. 探针:探测容器的健康状态。伴随pod的整个生命周期(除了启动探针)

总结:pod就是用来封装容器的,业务是容器。服务也是容器端口也是容器

http://www.lryc.cn/news/276842.html

相关文章:

  • MPEG4Extractor
  • 我在工作一年时怎么都看不懂的编程写法。今天手把手教给你
  • ThinkPHP5多小区物业管理系统源码(支持多小区)
  • 2024 年 API 安全:预测和趋势
  • 3D模型UV展开原理
  • SPL-cmcRVFL+
  • Vue3+TS+Vite 构建自动导入开发环境
  • 长期使用外接键盘,外物压着自带键盘,容易导致华硕飞行堡垒FX53VD键盘全部失灵【除电源键】
  • JavaScript-循环嵌套断点调试-笔记
  • 1042: 数列求和3 和 1057: 素数判定 和 1063: 最大公约与最小公倍
  • [足式机器人]Part2 Dr. CAN学习笔记-动态系统建模与分析 Ch02-8 Bode Plot伯德图
  • Java 将Excel转换为TXT文本格式
  • 什么事“网络水军”?他们的违法活动主要有四种形式
  • 授权策略(authorize方法)
  • FFmpeg获取音视频流信息
  • 编程语言的走向又将如何呢?
  • 基于SpringBoot的电影评论网站
  • 粒子群算法优化支持向量SVM的供热量预测,粒子群优化支持向量机SVM回归分析
  • 【Verilog】运算符
  • 浅析ARMv8体系结构:A64指令集
  • VSCode安装GitHub Copilot插件方法
  • 实战:使用docker容器化服务
  • 借用GitHub将typora图片文件快速上传CSDN
  • 外包公司干了2个月,技术退步明显了.......
  • PTA✨C语言 组合数的和
  • 这些开源自动化测试框架,会用等于白嫖一个w
  • 代码随想录第三十六天——无重叠区间,划分字母区间,合并区间
  • Python数据分析:入门到实践
  • 第7章-第9节-Java中的Stream流(链式调用)
  • 创建一个矩形中有两个三角形