k8s pod基础 1

发布和yaml文件的初步了解。

pod:是k8s中最小的资源管理组件。

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

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

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

在一个pod当中可以同时运行多个容器,在一个pod当中可以同时封装几个需要耦合热点互相写在的容器。

这些多个容器共享资源,也可以互相协作组成一个service单位。

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

一个pod内的容器,必须都运行在同一节点。基于现代容器技术的要求,就是一个pod运行一个容器,一个容器只运行一个进程(最常见用法)。

横向扩展,方便扩缩容

解耦,一个pod内运行多个容器,耦合度太高,一旦一个进程失败,整个pod将全部失败。实现解耦,基紆pod可以创建多个副本实现高可用和负载均衡。

管理方便,简单直观。

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

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

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

k8s提供了pause容器

pause最基础的init容器,提供容器之间的通信,容器里面的第一层。

1,为pod内的所有容器提高一个命名空间,提供基础环境,给容器提供资源,pod里的容器资源共享。

2,pause启动容器内的pid命名空间,是每个pod中都作为pid为1的进程(init进程),回收僵尸进程。是所有进程的父进程,管理pod内部所有进程。

3,创建pod之前会先创建pause容器,在拉取镜像,生成容器,形成pod。

kubelet管理node节点告诉如何创建pod,创建pause,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的中容器与外部通信时,从共享的资源当中进行分配。宿主机的端口映射。pod和容器共享IP地址。

存储资源:pod可以指定多个共享的volume挂载卷,pod内部的容器共享这些vloume卷。

volume可以时实现数据的持久化。

防止pod重新构建之后文件消失。

总结:

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

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

在node节点上

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

kube-controller-manager来分配ip地址,网络插件来通过网络服务。

为什么要在pod为再设置一个基础镜像:

1,pod内部有一组容器,挂了一个,整个pod也不会失效。引入了pause机制,代表整个容器组的状态。可以对pod内部容器整体状态的判断。

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

pod的分类

自主式pod:pod不会自我修复,如果pod内容器的进程终止,被删除,缺少资源被驱逐,这个pod没有办法自愈。

控制器:deployment daemanset。

控制器管理pod:滚动升级,可以自愈(自动重启),可以管理pod 的数量以及pod的扩缩容。

pod的生命周期:

1,pending 挂起状态

pod已被创建,但是尚未被分配到node节点。(节点上资源不够,需要等待其他pod的调度)

2,running:运行中,pod已经被分配到了node节点,pod内部定义容器都已经启动,运行状态正常,稳定。

3,complete:

       successed:

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

4,faild:pod中的容器非正常退出,发生了错误,需要通过查看详情和容器来单位问题。

5,UNkown:由于某些原因,k8s集群无法获取pod的状态。API-service出了问题

6,terminating:表示在终止中,正在被终止,还没有终止。里面的容器正在终止。过程中会进行资源回收,垃圾清理,以及终止过程中需要执行的命令。

init C 初始化容器,基础容器pause,在初始化容器成功运行完毕之后,在乎创建pod的业务容器

poststart:表示容器运行时执行的第一个命令

prestop:容器结束时执行的最后一个命令

容器钩子

探针:

livenessProbe:存活探针

readnessProbe:流量探针

存活探针和流量探针会伴随整个pod的生命周期。随时检测容器的状态,如果容器出了问题,pod将不再是ready状态。

启动探针:

探针的目的:容器状态是否正常

创建pod发容器分类:

1,基础容器:pause

2,init容器(初始容器)init c

在1和2这个过程中。pod的状态就是init:完成之后才会到业务容器。

3,业务容器

实验:

vim init.yaml

kubectl describe pod nginx-init

docker ps | grep nginx

init容器的作用:

环境变量:

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

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

init容器能以不同于pod内应用容器的文件系统视图运行。secrets的权限。应用容器是无法访问secerts权限。

总结:init容器提供了应用容器运行之前的先决条件,提供了一种阻塞或者延迟机制来控制应用容器的启动。

只有前置条件满足,才会创建pod应用容器。

k8s的一种机制

按照顺序创建init容器,都成功创建了才会创建业务容器。

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

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

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

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

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

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

6,每个容器的名称都要唯一,不能重复。

k8s当中的重启策略:

针对pod当中的所有容器

Always:只有容器退出,总是重启,物理容器的状态码是否正常。默认策略,可以不加

Never:只有容器退出,不论是否正常,都不重启

OnFailure:只有容器的状态码非0不正常退出才会重启,正常退出不重启。

默认情况下用Always。

在deployment的yaml文件当中,重启的策略只能的always,可以不写。

总结:

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

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

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

pod的生命周期:

1,pause基础容器

2,init容器---全部成功退出---业务容器

3,poststart prestop 容器的钩子 启动时命令和退出时的命令

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

一句话:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/230252.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云计算:OpenStack 分布式架构管理FLAT网络(单控制节点与多计算节点)

目录 一、实验 1.环境 2.控制节点创建网络 3.控制节点创建规格 4.控制节点新增安全组入口规则 5.控制节点创建实例 二、问题 1.FLAT网络底层如何实现 2.无法SSH 云主机实例 一、实验 1.环境 (1) 主机 表1 主机 主机架构IP备注controller控制节点192.168.204.210已部…

Swift并发的结构化编程

并发(concurrency) 早期的计算机 CPU 都是单核的,操作系统为了达到同时完成多个任务的效果,会将 CPU 的执行时间分片,多个任务在同一个 CPU 核上按时间先后交替执行。由于 CPU 执行速度足够地快,给人的错觉…

【单片机 TB作品】节拍器,电子音乐节拍器,51单片机,Proteus仿真

节拍器的使用可以使练琴者正确掌握乐曲的速度,从而使音 乐练习达到事半功倍的效果。本课题基于单片机设计具有声光晋 示的电子乐器节拍器,充分利用单片机的定时和中断系统,通过 C语言程序设计,控制外部相关硬件电路,实现对音乐速,度 40~120次/分钟范围内连续可调,节拍114、 2/4…

【Electron】快速建立Vue3+Vite+Electron Ts项目

git https://github.com/electron-vite/electron-vite-vue 创建项目 npm create electron-vite or pnpm create electron-vite 初始化 pnpm install or pnpm i 启动项目 pnpm dev 打包项目 pnpm build 项目创建成功后默认情况下 窗口是H800 W600 在createWindow 函数…

【privateGPT】使用privateGPT训练您自己的LLM

了解如何在不向提供商公开您的私人数据的情况下训练您自己的语言模型 使用OpenAI的ChatGPT等公共人工智能服务的主要担忧之一是将您的私人数据暴露给提供商的风险。对于商业用途,这仍然是考虑采用人工智能技术的公司最大的担忧。 很多时候,你想创建自己…

Golang拼接字符串性能对比

g o l a n g golang golang的 s t r i n g string string类型是不可修改的,对于拼接字符串来说,本质上还是创建一个新的对象将数据放进去。主要有以下几种拼接方式 拼接方式介绍 1.使用 s t r i n g string string自带的运算符 ans ans s2. 使用…

flex布局中滚动条展示内容时部分内容无法显示

这段时间看了一下之前的demo&#xff0c;发现了当时记录了一句 justify-content: center; 会影响滚动条内容展示&#xff0c;觉得还是记录一下 情况复现 这里我简单的写一下demo复现一下这个问题&#xff0c;如下&#xff1a; <!DOCTYPE html> <html lang"en&quo…

python django 生鲜商城管理系统

python django 生鲜商城管理系统,包含用户端和管理端 功能&#xff1a; 用户端&#xff1a;商城主页展示&#xff0c;登录&#xff0c;注册&#xff0c;用户中心&#xff0c;购物车&#xff0c;我的订单&#xff0c;购物车结算 管理端&#xff1a;登录&#xff0c;商品&…

QT上位机开发(绘图软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 稍微复杂一点的软件&#xff0c;一般都是带有绘图功能。绘图的意义&#xff0c;不仅仅是像CAD一样&#xff0c;可以进行模型的设计、比对和调试。它…

学习调整echarts中toolbox位置toolBox工具栏属性

学习调整echarts中toolbox位置toolBox工具栏属性 toolbox工具栏属性介绍示例代码代码参数说明 toolbox工具栏属性介绍 参考网址&#xff1a;https://echarts.apache.org/zh/option.html#tooltip 属性类型说明toolbox.showbooleanboolean 默认值为true&#xff0c;是否显示工具…

自由DIY预约小程序源码系统:适用于任何行业+自由DIY你的界面布局+全新升级的UI+多用户系统 带安装部署教程

随着移动互联网的普及&#xff0c;预约服务逐渐成为人们日常生活的一部分。从家政服务、医疗挂号到汽车保养&#xff0c;预约已经渗透到各个行业。然而&#xff0c;市面上的预约小程序大多功能单一&#xff0c;界面老旧&#xff0c;无法满足商家和用户的个性化需求。今天来给大…

Oracle regexp_replace 手机号脱敏

select 18012345678,regexp_replace(18012345678,(.){4},****,4,1) from dual;

python实现图像的二维傅里叶变换——冈萨雷斯数字图像处理

原理 二维傅里叶变换是一种在图像处理中常用的数学工具&#xff0c;它将图像从空间域&#xff08;我们通常看到的像素排列&#xff09;转换到频率域。这种变换揭示了图像的频率成分&#xff0c;有助于进行各种图像分析和处理&#xff0c;如滤波、图像增强、边缘检测等。 在数学…

第3课 使用FFmpeg获取并播放音频流

本课对应源文件下载链接&#xff1a; https://download.csdn.net/download/XiBuQiuChong/88680079 FFmpeg作为一套庞大的音视频处理开源工具&#xff0c;其源码有太多值得研究的地方。但对于大多数初学者而言&#xff0c;如何快速利用相关的API写出自己想要的东西才是迫切需要…

【PowerMockito:编写单元测试过程中采用when打桩失效的问题】

问题描述 正如上图所示&#xff0c;采用when打桩了&#xff0c;但是&#xff0c;实际执行的时候还是返回null。 解决方案 打桩时直接用any() 但是这样可能出现一个mybatisplus的异常&#xff0c;所以在测试类中需要加入以下代码片段&#xff1a; Beforepublic void setUp() …

AI智能分析网关V4区域人数超员算法模型的应用原理及使用场景

视频AI智能分析技术已经深入到人类生活的各个角落&#xff0c;与社会发展的方方面面紧密相连。从日常生活中的各种场景&#xff0c;如人脸识别、车牌识别&#xff0c;到工业生产中的安全监控&#xff0c;如工厂园区的翻越围栏识别、入侵识别、工地的安全帽识别、车间流水线产品…

Laravel的知识点

1 、 {{ }}和{!! !!} 的区别 1&#xff09;{{ }} : 未解析直接输出&#xff08; 是在 HTML 中内嵌 PHP 的 Blade 语法标识符&#xff0c;表示包含在该区块内的代码都将使用 PHP 来编译运行&#xff09; 2&#xff09;{!! !!} : 若变量值含有HTML标签将解析成前端代码 2.两种写…

大模型实战营第二期——1. 书生·浦语大模型全链路开源开放体系

文章目录 1. 实战营介绍2. 书生浦语大模型介绍2.1 数据2.2 预训练2.3 微调2.4 评测2.5 部署2.6 智能体(应用) 1. 实战营介绍 github链接&#xff1a;https://github.com/internLM/tutorialInternLM&#xff1a;https://github.com/InternLM书生浦语官网&#xff1a;https://in…

西电期末1017.有序序列插值

一.题目 二.分析与思路 简单题。主要考察简单的排序&#xff0c;最后的插入数据同样不用具体实现&#xff0c;只需在输出时多输出一下即可&#xff0c;注意顺序&#xff01;&#xff01; 三.代码实现 #include<bits/stdc.h>//万能头 int main() {int n;scanf("%d…

【数据结构】二叉树(一)——树和二叉树的概念及结构

前言: 本篇博客主要了解什么是树&#xff0c;什么是二叉树&#xff0c;以及他们的概念和结构。 文章目录 一、树的概念及结构1.1 树的基本概念1.2 树的相关特征1.3 树的实现 二、二叉树的概念及性质2.1 二叉树的概念2.2 二叉树的性质 一、树的概念及结构 1.1 树的基本概念 树&…