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

K8Spod组件

 一个pod能包含几个容器

一个pause容器(基础容器/父容器/根容器)

一个或者多个应用容器(业务容器)

通常一个Pod最好只包含一个应用容器,一个应用容器最好也只运行一个业务进程。

同一个Pod里的容器都是运行在同一个node节点上的,并且共享 net、mnt、uts、 pid、 ipc 命名空间。

pod的定义 

1

Pod是k8s中最小的资源管理组件

2

Pod也是最小化运行容器化的应用的资源管理对象

3

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

4

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

5

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

6

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

一个pod内的容器,必须都运行在同一个节点,基于现代容器技术的要求,就是一个pod运行一个容器,一个容器只运行一个进程,横向扩展(核心是方便扩缩容,还有就是解耦,一个pod内运行多个容器,耦合度太高,一旦一个进程失败,整个pod将全部失败)实现解耦,基于pod可以创建多个副本,实现高可用和负载均衡。管理方便,简单直观。

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

Pause容器是基础容器,也可以成为父容器,它的作用就是管理pod内容器的共享操作

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

k8s提供了pause容器两大核心功能

1

为pod内的所有容器提供一个统一的命名空间

2

启动容器的pid命名空间,每个pod中都作为pid都为1的进程(init进程) ,回收僵尸进程(pod里面是容器,容器运行的进程pid,pause父进程1在pod内部管理容器进程)

3

创建pod时,先创建pause容器,然后拉取镜像,生成容器,形成pod

 Pause容器共享两种资源

1

网络:每个pod都会被分配一个集群内部的唯一ip地址,pod内的容器共享网络,pod在集群内部的ip地址和端口,pod内部的容器可以使用localhost互相通信,pod的中容器与外部通信时,从共享的资源当中进行分配,宿主机的端口映射

2

存储pod可以指定多个共享volume,pod内的容器共享这些vloume

Vloume可以是实现数据持久化,可以防止pod重新构建之后数据文件丢失

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

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

Pod里面包含了一个或者多个相关的容器(也就是应用)

由kube-controller-manager 提供网络ip

Pod外再设置一个基础镜像

1

pod内部有一组容器,挂了一个,就算整个pod失效了吗?,引入了pause禁止,代表整个容器的组的状态

可以解决对pod内部容器整体状态的判断

2

pod内的容器共享ip,共享volume挂载卷,解决了容器网络通信的问题,解决了容器内部文件共享的问题

pod的分类

1

自主式pod:

这种pod不会自我修复,pod内容器的进程终止或者删除,或者缺少资源被驱逐,这个pod没有办法自愈

由scheduler进行调度,不被控制器管理,没有自愈能力,一旦pod挂掉,不会被重新拉起,没有副本管理,滚动更新功能

2

控制器管理pod:

可以滚动升级,可以自愈(自动重启),可以提供管理pod的数量,以及扩缩容

由scheduler进行调度,被控制器管理,有自愈能力(一旦pod挂了,会被控制器重新拉起),由副本管理,滚动更新等功能

3

静态pod

不由schedule调度,是由kubelet自行管理,始终和kubelet运行在同一个node节点上,不能直接删除,静态pod的yaml配置文件目录默认存放于/etc/kubenetes/manifests目录,在这个目录下创建或者删除yaml文件,kubelet会自动的创建或删除静态pod

#创建命令
kubectl create deployment/statefulset/daemonset ....

pod的生命周期与常见的状态

1

pending:挂起状态,

pod已被创建,但是尚未被分配到运行的node节点(一直pending的原因:节点上资源不够,需要等待其他pod的调度)

2

Running:运行中,

pod已被分配到了node节点,pod内部的所有容器都已经启动,运行状态正常,且稳定

3

Complete:也叫successded,

容器内部的进程运行完毕,正常退出,没有发生错误

4

Faild:

pod中的容器非正常状态退出,发生了错误,需要通过查看详情来定位问题

5

UNkown:

由于某些原因,k8s集群无法获取pod的状态,APIserver出了问题

7

Terminating:

终止中,正在被中终止,pod正在被删除,但是里面的容器正在终止,这个过程其中还会有一些其他的操作,如资源回收,垃圾清理,以及终止过程中需要执行的命令

pod遵循预定义的生命周期,起始于pending阶段,如果至少其中有一个主容器正常运行,则进入running阶段,之后取决于pod是否有容器以失败状态退出而进入succeeded或者Failed阶段

 创建pod的容器分类

1

基础容器:pause

作为linux命名空间共享的基础,给pod里其他的容器提供网络,存储资源的共享

作为pid=1的init进程管理整个pod容器组的生命周期

2

Init容器:初始化容器,init c   

在1和2这个过程中,pod的状态叫init:0/3,每启动一个就改变1/3 , 2/3 , 3/3 ,全部启动之后才会到业务容器

Init容器的作用:环境变量,可以在创建的过程中为业务容器定制好,相关的代码和工具

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

Init容器能以不同于pod内应用容器的文件系统视图运行,secrets的权限(保存一些加密的安全机制配置),应用容器无法访问secrets的权限、

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

3

业务容器(应用容器)

pod由多个应用容器时,是并行启动的,即应用容器要在所有init容器都成功的完成启动,运行,退出后才会启动

1

在pod的启动过程中,容器是按照初始化容器先启动,每个容器必须在下一个容器启动之前,要成功退出

2

如果运行失败,会按照容器的重启策略进行指定动作,resatrtPolicy   Always  never  onFailure(非正常退出才会重启)

3

所有的init容器没有成功之前,pod是不会进入ready状态的

Init容器与service无关,不能对外提供访问

4

如果重启pod,所有的init容器一定会重新执行

5

如果修改init容器的spec(参数),只限制于image,其他的修改字段都不生效(基于deployment)

6

在pod中每个容器的名称都要唯一,不能重复

 pod中容器的重启策略

Always只要容器退出,总是重启,无论容器的状态码是否正常,默认策略,可以不加
Never只要容器退出,不论是否正常,都不重启
OnFailure只要容器的转态码非0才会重启(pod容器异常退出时),正常退出不重启(容器退出码为0)

总结

Pause容器:底层容器,也可以理解为基础容器

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

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

Pod的生命周期

1pause基础容器
2Init初始化容器,全部成功退出,才会到业务容器
3Postart prestop 容器的钩子,启动时命令和退出时的命令
4探针:探测容器的健康状态,伴随pod的整个生命周期(除了启动探针)
总结:pod就是用来封装容器,业务室容器,服务也是容器,包括端口也是容器

Pod的重启策略always只要有一个失败整个pod都会重启,

Never:都不重启

OnFail:重启整个pod

相关文章:

K8Spod组件

一个pod能包含几个容器 一个pause容器(基础容器/父容器/根容器) 一个或者多个应用容器(业务容器) 通常一个Pod最好只包含一个应用容器,一个应用容器最好也只运行一个业务进程。 同一个Pod里的容器都是运行在同一个node节点上的,并且共享 net、…...

clickhouse-client INSERT CSV/TSV时跳过错误行

clickhouse-client INSERT CSV/TSV时跳过错误行 在使用clickhouse-client向ck中导入csv文件时,当csv中有个别行数据格式错误时,整个文件就插入失败了,经常会导致丢数据。 经过一番搜索,发现ck提供了两个参数可以跳过错误行&#x…...

直流稳压电源电路

一、稳压电源的技术指标及对稳压电源的要求 稳压电源的技术指标可以分为两大类:一类是特性指标,如输出电压、输出电滤及电压调节范围;另一类是质量指标,反映一个稳压电源的优劣,包括稳定度、等效内阻(输出电阻&#x…...

记录爬虫编写步骤

本文讲解 Python 爬虫实战案例:抓取百度贴吧(https://tieba.baidu.com/)页面,比如 Python爬虫吧、编程吧,只抓取贴吧的前 5 个页面即可。今天一个毕业学生问到一个问题:不清楚编写爬虫的步骤,不…...

SpringBoot配置Swagger2与Swagger3

swagger是什么? 在平时开发中,一个好的API文档可以减少大量的沟通成本,还可以帮助新加入项目的同事快速上手业务。大家都知道平时开发时,接口变化总是很多,有了变化就要去维护,也是一件比较头大的事情。尤…...

C/C++ 枚举

目录 枚举概述 枚举的使用 枚举的大小计算 枚举的优点 C语言中的自定义类型有:结构 位段 枚举 联合 枚举概述 枚举顾名思义就是一一列举,把可能的取值一一列举。 比如我们现实生活中:一周的星期一到星期日是有限的7天&#xff0c…...

P12 音视频复合流——TS流讲解

前言 从本章开始我们将要学习嵌入式音视频的学习了 ,使用的瑞芯微的开发板 🎬 个人主页:ChenPi 🐻推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ 🔥 推荐专栏2: 《Linux C应用编程(概念类)_C…...

三维重建 3D Gaussian Splatting:实时的神经场渲染

目录 概念理解三维高斯喷洒 渲染实例 依赖项: 编译报错: 预训练模型 13G:...

Django Web框架

1、创建PyCharm项目 2、安装框架 pip install django4.2.0 3、查看安装的包列表 4、使用命令创建django项目 django-admin startproject web 5、目录结构 6、运行 cd web python manage.py runserver7、初始化后台登录的用户名密码 执行数据库迁移生成数据表 python man…...

ARCGIS PRO SDK GeometryEngine.Intersection的GeometryDimensionType 枚举

描述几何对象的维度。与 GeometryEngine.Intersection 一起使用。 ​ 成员描述EsriGeometry0Dimension零维(点或多点)。EsriGeometry1Dimension一维(折线)。EsriGeometry2Dimension二维(多边形或包络)。Es…...

Web网页开发-CSS层叠样式表1-笔记

1.CSS的引入方式 (1)内嵌式:把style双标签写在head标签里面,可以影响同种标签 (2)行内式:把style写在标签内部,只能影响当前标签 (3)外链式:创建css文件,使用link将html文件和css文件连接起来 (4)导入式&am…...

如何预防变种.halo勒索病毒感染您的计算机?

尊敬的读者: 在数字时代,威胁网络安全的.halo勒索病毒日益猖狂。本文将深入介绍.halo病毒的攻击方式,以及针对被加密文件的恢复方法和预防措施。在面对被勒索病毒攻击导致的数据文件加密问题时,技术支持显得尤为重要,…...

短网址的新玩法,短到只剩域名

短网址大家应该都不陌生了,一句话就可以解释清楚,把一串很长的网址缩短到只有几个字符依然可以正常访问,缩短之后会更加简洁美观。 那大家见过的短网址一般长啥样呢,比如t.cn/xxxxx、dwz.cn/xxxxx、c1ns.cn/xxxxx。这些短网址都有…...

FA2016AA (MHz范围晶体单元超小型低轮廓贴片) 汽车

随着科技的不断发展,智能汽车逐渐成为人们出行的首选。而其中,频率范围在19.2 MHz ~ 54 MHz的晶体单元超小型低轮廓贴片(FA2016AA)为汽车打造更智能、更舒适、更安全的出行体验。FA2016AA贴片的外形尺寸为2.0 1.6 0.5 mm&#x…...

【设计模式之美】面向对象分析方法论与实现(一):需求分析方法论

文章目录 一. 需求举例二. 对案例进行需求分析1. 第一轮基础分析2. 第二轮分析优化3. 第三轮分析优化4. 第四轮分析优化5. 最终确定需求 三. 小结 本文主要描述: 面向对象的需求分析方法论 一. 需求举例 假设,你正在参与开发一个微服务。微服务通过 HTT…...

MySQL视图索引执行计划相关十五道面试题分享

目录 一. 视图 1.1 含义 1.2 操作 创建视图 修改视图 删除视图 查看视图 二. 索引 2.1 什么是索引 2.2 为什么要使用索引 2.3 优点 2.4 缺点 2.5 何时不适用索引 2.6 索引何时失效 三. 执行计划 3.1 什么是执行计划 3.2 执行计划的作用 四. 面试题 表结构 …...

vue绑定背景颜色或背景图片 和 nuxtjs动态设置background-image:

v-bind绑定样式表&#xff1a; ---------------------------------------------------------------------------------------------------- HTML写法: <div class"myItem" style"text-align:center; background-image:url(); background-size:auto 100% ;ba…...

案例099:基于微信小程序的外卖小程序的研究与开发

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…...

数据库的设计

理解数据库第二范式2NF的必备知识 关系数据库基础&#xff1a; 了解关系数据库的基本概念&#xff0c;包括表格、行、列、主键、外键等。 第一范式&#xff08;1NF&#xff09;&#xff1a; 在理解第二范式之前&#xff0c;首先要了解第一范式。第一范式要求表格中的每个列都包…...

数据比较时String未转成BigDecimal的坑

如果价格的字段是String&#xff0c;要转换成BigDecimal等数字再比较&#xff0c;用String比较会出现奇怪的错误。 这句话看起来很多余&#xff0c;但是实际写代码的时候确是很容易忽略。 比如价格这个字段封装在对象里&#xff0c;而你只是a.getPrice().compareTo(b.getPrice…...

MySQL第三战:CRUD,函数1以及unionunion all

目录 前言 一.CRUD 1.查询 概念&#xff1a; 语法 含义 2.新增 概念&#xff1a; 语法 含义&#xff1a; 3.修改 语法 含义 4.删除 语法 含义 二.函数 1.字符函数 2.数字函数 3.日期函数 4.聚合函数 三.union&union all 概念 语法 专业词解释 使用…...

业务项目中Echarts图表组件的封装实践方案

背景&#xff1a;如果我们的项目是一个可视化类/营销看板类/大屏展示类业务项目&#xff0c;不可避免的会使用到各种图表展示。那在一个项目中如何封装一个图表组件既能够快速复用、UI统一&#xff0c;又可以灵活扩充Echarts的各种复杂配置项配置就变得极为重要。 封装目标 符…...

鸿蒙开发之拖拽事件

一、拖拽涉及的方法 Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)//拖拽开始.onDragStart((event: DragEvent) > {console.log(drag event onDragStartevent.getX())})//拖拽进入组件范围&#xff0c;需要监听onDrop配合.onDragEnter((event: DragEvent) …...

C#使用纯OpenCvSharp部署yolov8-pose姿态识别

【源码地址】 github地址&#xff1a;https://github.com/ultralytics/ultralytics 【算法介绍】 Yolov8-Pose算法是一种基于深度神经网络的目标检测算法&#xff0c;用于对人体姿势进行准确检测。该算法在Yolov8的基础上引入了姿势估计模块&#xff0c;通过联合检测和姿势…...

[AutoSar]基础部分 RTE 04 数据类型的定义及使用

目录 关键词平台说明一、数据类型分类二、Adt三、Idt四、Base 数据类型五、units六、compu methods七、data constraint 关键词 嵌入式、C语言、autosar、Rte 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言C&#xff0c;C编译器HighTec (GCC) 一、数据…...

c#调试程序一次启动两个工程(多个工程)

概述 c# - Visual Studio : debug multiple projects at the same time? 以在解决方案中设置多个启动项目(右键单击解决方案&#xff0c;转到设置启动项目&#xff0c;选择多个启动项目)&#xff0c;并为包含在解决方案(无、开始、不调试就开始)。如果您将多个项目设置为开始…...

轻松搭建企业知识库:10款必备工具推荐

随着企业知识的不断积累和团队规模的扩大&#xff0c;如何高效地管理和利用这些知识成为了一个重要的问题。企业知识库作为一种有效的知识管理工具&#xff0c;可以帮助企业将分散的知识整合在一起&#xff0c;方便团队成员快速查找、学习和共享。接下来就分享10款很不错的企业…...

第三天学习记录

第二天 C++随便提一提重点学习编译原理选学离散数学形式语言与自动机理论数据结构C++ 随便提一提 C++面向对象编程。与强调算法的过程性编程(试图使问题满足语言的过程性方法)不同。面向对象编程强调的是数据,它试图让语言来满足问题的要求。其理念是设计与问题本质特征相对…...

内核线程创建-kthread_create

文章参考Linux内核线程kernel thread详解 - 知乎 大概意思就是早期创建内核线程&#xff0c;是交由内核处理&#xff0c;由内核自己完成&#xff08;感觉好像也不太对呢&#xff09;&#xff0c;创建一个内核线程比较麻烦&#xff0c;会导致内核阻塞。因此就诞生了工作队列以及…...

uniappVue3版本中组件生命周期和页面生命周期的详细介绍

一、什么是生命周期&#xff1f; 生命周期有多重叫法&#xff0c;有叫生命周期函数的&#xff0c;也有叫生命周期钩子的&#xff0c;还有钩子函数的&#xff0c;其实都是代表&#xff0c;在 Vue 实例创建、更新和销毁的不同阶段触发的一组钩子函数&#xff0c;这些生命周期函数…...

注册公司需要多久/seo培训机构哪家好

文中大部分中心思想来源于Event Processing In Action一书的9.4节。 模式识别器的基本策略是&#xff1a;所有时间窗内的事件被称为候选事件&#xff08;Participant Events&#xff09;&#xff0c;再由候选事件根据规则产生匹配集&#xff08;Matching Set&#xff09;。 1. …...

电脑培训网上免费课程/北京网站优化价格

1.准备前提&#xff0c;下载对应的安装软件&#xff1b; Rabbit MQ 是建立在强大的Erlang OTP平台上&#xff0c;因此安装RabbitMQ之前要先安装Erlang。 erlang&#xff1a;http://www.erlang.org/download.htmlrabbitmq&#xff1a;http://www.rabbitmq.com/download.html 下…...

WordPress多站点恢复/百度广告推广电话

DAY 03循环结构&#xff1a;代表语句&#xff1a;while、do while、forwhile格式&#xff1a;初始化表达式&#xff1b;while (条件表达式)&#xff5b;循环体&#xff08;执行语句&#xff09;&#xff1b;&#xff5d;1、while格式&#xff1a;while格式&#xff1a;初始化表…...

wordpress 访问密码/长沙关键词优化服务

遇到一个这样的问题在hibernate应用时&#xff0c;Qurey对象qurey Query query ses.createQuery(HQL); query.setDate("endTime",new Date()); 这个时候的new Date()被截去了时分秒 解决办法 Query query ses.createQuery(HQL); query.setTimestamp("endT…...

公司网站开发题目来源/上海网络推广营销策划方案

作者&#xff1a;吴丹君律师 张振君律师助理2020年9月2日&#xff0c;网络安全等级保护和关键信息基础设施安全保护工作宣贯大会在京召开&#xff0c;大会对公网安〔2020〕1960号《贯彻落实网络安全等级保护制度和关键信息基础设施安全保护制度的指导意见》(以下简称“《指导意…...

网页设计代码大全模板/seo优化公司如何做

Python采用引用计数的机制进行垃圾回收。 引用计数&#xff1a; 当变量创建时&#xff0c;变量的值就多了一个引用&#xff0c;它的引用计数就1 如果又有一个变量指向这个值时&#xff0c;引用计数继续加1&#xff0c;如果变量被清除&#xff0c;引用计数就减1。 当变量的值的引…...