k8s之pod
1、pod:k8s中最小的资源管理组件,最小化运行容器化应用的资源管理对象
(1)pod是一个抽象的概念,可以理解为一个或者多个容器化应用的集合
(2)一个pod中运行一个容器是最常用的方式
(3)一个pod中同时运行多个容器,在一个pod中可以同时封装多个需要耦合的互相协作的容器,这些多个容器共享资源,互相协作组成一个service单位
(4)一个pod内的容器,必须都运行在一个node节点上,基于现代容器技术的要求,就是一个pod运行一个容器,一个容器只运行一个进程
①横向扩展,方便扩缩容
②解耦,一个pod内运行多个容器耦合度太高,一旦一个进程失败,整个pod将全部失败,实现解耦,基于pod可以创建多个副本,实现高可用和负载均衡
③管理方便,简单直观
(5)不论运行一个或者多个容器,k8s管理的都是pod而不是容器
2、pod内的容器共享资源(共享机制)
(1)共享机制:pause底层基础容器来提供共享资源的机制
①pause是基础容器,也可以称为父容器,管理pod内容器的共享操作
②pause还可以管理容器的生命周期
(2)k8s提供了pause容器(pause的作用)
①为pod内的所有容器提供了统一的命名空间
②启动容器的pid命名空间(进程号),每个pod中,pause都作为pid为1的进程(init进程),可回收僵尸进程(pause作为所有容器进程的父进程,管理pod内部的容器进程)
③创建pod时,先创建pause容器,然后再拉取镜像生成容器,最后形成pod(pause来分配和回收容器的资源)
(3)kubelet和pause
①kubelet管理node节点上的容器的生命周期,pause管理pod中的容器

(4)pause容器共享两种资源
| 网络资源 | • 每个pod都会被分配一个集群内部的唯一的IP地址,pod内部的容器共享网络,pod在集群内部的IP地址和端口。 • pod内部的容器可以使用localhost互相通信,pod中的容器与外部通信时,从共享的资源当中进行分配,宿主机的端口映射 |
| 存储资源 | pod可以指定多个共享的volume,pod内的容器共享这些volume volume可以实现数据的持久化 防止pod重新构建之后文件消失 |

3、总结
(1)每个pod都有一个基础容器,pause容器
(2)pause容器对应的镜像属于k8s集群的一部分,创建集群就会有pause这个基础镜像
(3)pod里面包含了一个或者多个相关的容器(应用)
4、设置基础基础镜像pause的作用
(1)引入pause机制,代表整个容器组的状态,可以解决对pod内部容器整体状态的判断
(2)pod内的容器共享ip、volume挂载卷,解决了容器内网络通信的问题,解决了容器内部文件共享的问题
5、pod的分类
| 自主式pod | 此类pod不会自我修复,若pod内容器的进程终止或被删除、缺少资源被驱逐,这种pod没有办法自愈 |
| 控制器管理pod | 能滚动升级、自愈(自动重启)、管理pod的数量以及pod的扩缩容 |
6、pod的生命周期(重点)
| pod生命周期的状态 | |
| pending | 挂起,pod已被创建,尚未被分配到运行的node节点(原因:节点上资源不够、需要等待其他pod的调度) |
| running | 运行中,pod已经被分配到了node节点,pod内部的所有容器都已经启动,运行状态正常,稳定 |
| complete/ successded | 容器内部的进程运行完毕,正常退出,没有发生错误 |
| failed | pod中的容器非正常退出,发生了错误,需要通过查看详情和日志来定位问题 |
| unknow | 由于某些原因,k8s集群无法获取pod的状态,一般是APIserver出现问题 |
| terminating | 终止中,pod正在被删除,里面的容器正在终止,还要进行资源回收、垃圾清理、以及终止过程中需要执行的命令 |
7、创建pod的容器分类
(1)基础容器:pause container
(2)init容器(初始化容器):init container(init容器运行完即被终止)
①前两个过程中,pod的状态是init:3/3,才会进入业务容器
| init容器的作用 |
| • 环境变量,可以在创建的过程中为业务容器定制好相关的代码和工具 |
| • init容器独立于业务容器,是单独构建的一个镜像,对业务容器不产生任何安全影响 |
| • init容器能以不同于pod内业务容器的文件系统试图运行,secrets的权限,业务容器无法访问secrets的权限 |
| 总结:init容器提供了业务容器运行之前的先决条件,提供了一种阻塞或者延迟机制来控制业务容器的启动,只有前置条件满足,才会创建pod的业务容器 |
(3)业务容器:main container
8、pod容器创建的过程




9、pod创建过程的总结
(1)在pod的启动过程中,容器按照:初始化容器先启动,每个容器必须在下一个容器启动之前成功退出
(2)如果运行失败,会按照容器的重启策略进行指定动作,restartPolicy(always、never、onfailure—非正常退出才会重启)
(3)所有的init容器没有成功之前,pod是不会进入ready状态的,init容器与service无关,不能对外提供访问
(4)如果重启pod,所有的init容器一定会重新执行
(5)如果修改init容器的spec(参数),只限制于image,其他的修改字段都不生效(基于deployment)
(6)每个容器的名称都要唯一,不能重复
10、pod的重启策略(基于容器的状态)
(1)On Failure策略
①状态码正常


②状态码不正常



11、总结
(1)pause容器:底层容器/基础容器
①pause提供pod内容器的网络和存储共享,以及pod内容器退出之后的资源回收
(2)init容器:人为设定的,业务容器启动之前的必要条件
(3)pod的生命周期
①第一步:起pause基础容器
②第二步:init容器全部成功退出,才起业务容器
③poststart、prestop:容器的钩子
④探针:探测容器的健康状态,伴随pod的整个生命周期(除了启动探针)
(4)pod就是用来封装容器的,业务是容器,服务也是容器,端口也是容器
相关文章:
k8s之pod
1、pod:k8s中最小的资源管理组件,最小化运行容器化应用的资源管理对象 (1)pod是一个抽象的概念,可以理解为一个或者多个容器化应用的集合 (2)一个pod中运行一个容器是最常用的方式 ÿ…...
第二百四十三回 再分享一个Json工具
文章目录 1. 概念介绍2. 分析与比较2.1 分析问题2.2 比较差异 3. 使用方法4. 内容总结 我们在上一章回中介绍了"分享三个使用TextField的细节"相关的内容,本章回中将再 分享一个Json插件.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我…...
electron自定义菜单
创建menu.js const { app, Menu } require("electron"); const createMenu () > {const menu [{label: "菜单",submenu: [{label: "新增",click: () > {},}, ],},{label: "关于",submenu: [{label: "新增",click:…...
变量和函数提升(js的问题)
• js解释执行 • 变量和函数提升 变量声明提前,函数声明提前 • 变量声明提前:值停留在本地 • 函数声明提前:整个函数体提前 如果是var赋值声明的函数,变量提前,函数体停留在本地 1、变量提…...
Excel 插件:ASAP Utilities Crack
ASAP Utilities是一款功能强大的 Excel 插件,填补了 Excel 的空白。在过去的 20 年里,我们的加载项已经发展成为世界上最受欢迎的 Microsoft Excel 加载项之一。 ASAP Utilities 中的功能数量(300 多个)可能看起来有点令人眼花缭乱…...
hyperf 十九 数据库 二 模型
教程:Hyperf 一、命令行 symfony/console-CSDN博客 hypery 十一、命令行-CSDN博客 hyperf console 执行-CSDN博客 根据之前应该能了解到命令行的基本实现,和hyperf中命令行的定义。 1.1 命令初始化 hyperf.php中系统初始化中通过ApplicationFacto…...
使用python快速开发与PDF文档对话的Gemini聊天机器人
检索增强生成(Retrieval-augmented generation,RAG)使得我们可以让大型语言模型(LLMs)访问外部知识库数据(如pdf,word、text等),从而让人们可以更加方便的通过LLM来学习外部数据的知识。今天我们将利用之前学习到的RAG方法,谷歌Gemini模型和l…...
Spring Cloud Gateway集成Knife4j
1、前提 网关路由能够正常工作。 案例 基于 Spring Cloud Gateway Nacos 实现动态路由拓展的参考地址:Spring Cloud Gateway Nacos 实现动态路由 详细官网案例:https://doc.xiaominfo.com/docs/middleware-sources/spring-cloud-gateway/spring-gatewa…...
Hive10_窗口函数
窗口函数(开窗函数) 1 相关函数说明 普通的聚合函数聚合的行集是组,开窗函数聚合的行集是窗口。因此,普通的聚合函数每组(Group by)只返回一个值,而开窗函数则可为窗口中的每行都返回一个值。简单理解,就是对查询的结果多出一列…...
ipvsadm命令详解
ipvsadm命令详解 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨一个在Linux系统网络管理中极具威力的命令——ipvsadm,通过详细解析…...
zabbix通过自动发现-配置监控项、触发器(小白教程)
自动发现配置参考链接(不小白,不友好) zabbix-get介绍 1配置 zabbix server:版本7(不影响),IP地址:192.168.0.60zabbix agent:版本agent1(不影响)ÿ…...
Dockerfile文件介绍
0 Preface/Foreword 0.1 Docker docker用来自制镜像。 1 Introduction 1.1 Dockerfile Dockerfile是用于定义Docker镜像的构建过程,它包含一系列的指令用于安装 软件包、配置环境等操作。 Dockerfile文件的格式如下: FROM base_image RUN apt-get up…...
【PHP】函数array_reduce()使用场景
目录 1.计算数组中所有元素的和 2.计算数组中所有元素的乘积 3.将多个字符串连接在一起 4.对数组中的元素进行逻辑计算 5.取出第一个满足条件的数组,筛选有用数组 6.array_reduce()函数的基本语法: array_reduce 函数通常用于对数组中的元素进行累…...
软件测试基础理论学习-软件测试方法论
软件测试方法论 软件测试的方法应该建立在不同的软件测试类型上,不同的测试类型会存在不同的方法。本文以软件测试中常见的黑盒测试为例,简述常见软件测试方法。 黑盒测试用例设计方法包括等价类划分法、边界值分析法、因果图法、判定表驱动法、正交试…...
Unity 关于点击不同物品移动并触发不同事件
关于点击不同物品触发不同事件 可以实现在界面中点击不同的物体,移动到物品附近位置,然后触发对应的事件。 首先建立一个公共管理的类: public class InteractionObject : MonoBehaviour {private NavMeshAgent PlayerAgent;private bool …...
c++IO库详细介绍
文章目录 前言c IO 类简介1. iostream库iostream 类标准IO对象 2. fstream库fstream 类 3. stringstream库stringstream 类 格式化和控制错误处理 IO对象无拷贝或赋值IO条件状态主要的状态标志检查流状态控制流状态示例 管理输出缓冲主要操作示例 文件输入输出使用文件流对象示…...
海外静态IP和动态IP有什么区别?推荐哪种?
什么是静态ip、动态ip,二者有什么区别?哪种好?关于这个问题,不难发现,在知道、知乎上面的解释有很多,但据小编的发现,这些回答都是关于静态ip和动态ip的专业术语解释,普通非专业人事…...
OpenHarmony从入门到放弃(一)
OpenHarmony从入门到放弃(二) 一、OpenHarmony的基本概念和特性 OpenHarmony是由开放原子开源基金会孵化及运营的开源项目,其目标是构建一个面向全场景、全连接、全智能的时代的智能终端设备操作系统。 分布式架构 OpenHarmony采用分布式…...
Unity3D UGUI图集打包与动态使用(TexturePacker)
制作图集的好处: 众所周知CPU是用来处理游戏的逻辑运算的,而GPU是用来处理游戏中图像的。在GPU中,我们要绘制一个图像需要提交图片(纹理)到显存,然后再进行绘制(在这个过程中会产生一次DrawCall…...
java maven项目添加oracle jdbc的依赖
一般添加依赖是直接在pom.xml中添加配置即可,Maven会自动获取对应的jar包,但是oracle驱动依赖添加后会显示红色,代表找不到依赖项,是因为Oracle授权问题,Maven3不提供Oracle JDBC driver,为了在Maven项目中…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
