POD创建与删除简单描述
创建一个 Pod 的过程可以分为以下几个步骤:
- 用户使用 kubectl create 命令或 YAML 文件向 API 服务器发送创建 Pod 的请求。
- API 服务器将请求转换为 Kubernetes 的内部对象,并将 Pod 的状态设置为 Pending。
- 调度器根据 Pod 的资源需求和节点的资源情况,将 Pod 调度到合适的节点上。
- 节点上的 kubelet 接收调度器调度过来的 Pod,并将其状态设置为 Running。
- kubelet 为 Pod 创建容器,并为容器分配资源。
容器启动,并开始运行。
白话解释:
用户向 API 服务器说:“我要创建一个 Pod。”
API 服务器把用户的话转换成 Kubernetes 内部的语言,然后告诉调度器:“这个 Pod 要创建了。”
调度器把这件事告诉 kubelet,kubelet 就开始准备创建 Pod。
kubelet 为 Pod 创建容器,并为容器分配资源。
容器启动,并开始运行。用户->>API 服务器: 提交 Pod 创建请求API 服务器->>调度器: 转换 Pod 创建请求调度器->>节点: 调度 Pod节点->>kubelet: 接收 Podkubelet->>容器: 创建容器容器->>: 启动
删除一个 Pod 时,Kubernetes 会执行以下步骤:
-
- 用户使用
kubectl delete命令或 YAML 文件向 API 服务器发送删除 Pod 的请求。
- 用户使用
-
- API 服务器将请求转换为 Kubernetes 的内部对象,并将 Pod 的状态设置为
Terminating。
- API 服务器将请求转换为 Kubernetes 的内部对象,并将 Pod 的状态设置为
-
- 调度器将 Pod 的状态设置为
Terminating。
- 调度器将 Pod 的状态设置为
-
- kubelet 将 Pod 的状态设置为
Terminating,并向 Pod 中的每个容器发送 SIGTERM 信号,通知容器准备退出。
- kubelet 将 Pod 的状态设置为
-
- 容器在指定的超时时间内退出。如果容器在超时时间内未退出,则 kubelet 会向容器发送 SIGKILL 信号,强制容器退出。
-
- kubelet 删除 Pod 的相关资源,包括 Pod 的定义、容器的镜像、容器的日志等。
-
etcd 是 Kubernetes 集群的核心组件,负责存储 Kubernetes 的所有数据。在删除 Pod 时,etcd 需要执行以下操作:
-
- 删除 Pod 的定义。
-
- 删除 Pod 的相关资源,包括容器的镜像和容器的日志等。
白话解释
* 用户向 API 服务器说:“我要删除一个 Pod。”
* API 服务器把用户的话转换成 Kubernetes 内部的语言,然后告诉调度器:“这个 Pod 要删除了。”
* 调度器把这件事告诉 kubelet,kubelet 把这件事告诉 Pod 中的容器:“你们要被删除了。”
* 容器听到 kubelet 的话,就开始准备退出。如果容器在规定的时间内没有退出,kubelet 就会强行让它退出。
* 容器退出后,kubelet 会把 Pod 的相关资源都删除掉。etcd 是 Kubernetes 的记事本,负责记住 Kubernetes 的所有信息。在删除 Pod 时,etcd 要把 Pod 的相关信息都删除掉。
- Pending:Pod 尚未被调度到任何节点。
- Running:Pod 已被调度到一个节点,并且所有容器都已启动并正在运行。
- Succeeded:Pod 中的所有容器都已成功终止。
- Failed:Pod 中的至少一个容器已失败。
- Unknown:Pod 的状态无法确定。
Pending 阶段
在 Pending 阶段,Pod 尚未被调度到任何节点。Pod 处于此阶段的原因可能有以下几种:
- Pod 尚未被用户创建。
- Pod 已被创建,但调度器尚未将其调度到任何节点。
- Pod 已被调度到一个节点,但该节点尚未准备好运行 Pod。
Running 阶段
在 Running 阶段,Pod 已被调度到一个节点,并且所有容器都已启动并正在运行。Pod 处于此阶段的时间可能会持续很长,直到 Pod 被终止。
Succeeded 阶段
在 Succeeded 阶段,Pod 中的所有容器都已成功终止。Pod 处于此阶段的原因可能是以下几种:
- Pod 的定义中包含了
terminationGracePeriodSeconds字段,并且该字段指定的超时时间已过。 - Pod 的定义中包含了
restartPolicy字段,并且该字段指定的策略为Never。
Failed 阶段
在 Failed 阶段,Pod 中的至少一个容器已失败。Pod 处于此阶段的原因可能是以下几种:
- Pod 的定义中包含了
restartPolicy字段,并且该字段指定的策略为Always或OnFailure。 - Pod 的定义中包含了
terminationGracePeriodSeconds字段,并且该字段指定的超时时间已过,但 Pod 中的容器仍未成功终止。
Unknown 阶段
在 Unknown 阶段,Pod 的状态无法确定。Pod 处于此阶段的原因可能是以下几种:
- Pod 的定义中包含了
restartPolicy字段,并且该字段指定的策略为Never。 - Pod 的定义中包含了
terminationGracePeriodSeconds字段,并且该字段指定的超时时间已过,但 Pod 仍未被调度到任何节点。
Pod 的状态转换
Pod 的状态可能会从一个阶段转换到另一个阶段。以下是 Pod 状态转换的可能情况:
- Pending -> Running:Pod 已被调度到一个节点,并且所有容器都已启动。
- Running -> Succeeded:Pod 中的所有容器都已成功终止。
- Running -> Failed:Pod 中的至少一个容器已失败。
- Pending -> Unknown:Pod 的定义中包含了
restartPolicy字段,并且该字段指定的策略为Never。 - Running -> Unknown:Pod 的定义中包含了
terminationGracePeriodSeconds字段,并且该字段指定的超时时间已过,但 Pod 仍未被调度到任何节点。
控制 Pod 的状态
可以使用 Kubernetes 的 API 或命令行工具来控制 Pod 的状态。使用 kubectl delete 命令来终止 Pod。
还可以使用 Pod 的 restartPolicy 字段来控制 Pod 在失败时是否重启。如果您将 restartPolicy 字段设置为 Never,则 Pod 将不会在失败时重启。
Deployment 和 ReplicaSet 都是 Kubernetes 中用于管理 Pod 副本的对象。它们的主要区别在于:
- **Deployment 是一个更高级的抽象。**它提供了一些 ReplicaSet 没有的功能,例如:
- 滚动更新:Deployment 可以自动滚动更新 Pod 副本,而不会影响应用程序的可用性。
- 回滚:Deployment 可以自动回滚到以前的版本。
- 伸缩:Deployment 可以自动伸缩 Pod 副本的数量。
- **ReplicaSet 是一个更简单的对象。**它只负责管理 Pod 副本的数量。
1.28.x 版本的 Kubernetes 仍然支持 ReplicaSet。但是,新版本的 Kubernetes 建议使用 Deployment 来管理 Pod 副本。Deployment 提供了 ReplicaSet 没有的功能,可以简化应用程序的部署和管理。
以下是 Deployment 和 ReplicaSet 的具体用途:
- **Deployment 适合需要进行滚动更新、回滚和伸缩的应用程序。**例如,Web 应用程序、微服务等。
- **ReplicaSet 适合不需要进行滚动更新、回滚和伸缩的应用程序。**例如,批处理应用程序、数据库等。
具体选择哪种对象,需要根据应用程序的实际需求来决定。
StatefulSet 更新 Pods 很慢的原因主要有以下几个:
- **StatefulSet 的更新策略是滚动更新。**在滚动更新过程中,StatefulSet 会逐个更新 Pod,并将旧 Pod 从集群中删除。这会导致应用程序的不可用时间。
- **StatefulSet 的存储卷是持久化的。**在更新 Pod 时,StatefulSet 需要将旧 Pod 的存储卷数据复制到新 Pod。这会导致更新过程变慢。
如果没有存储的情况下,StatefulSet 更新 Pods 仍然很慢的原因是,StatefulSet 仍然需要将旧 Pod 从集群中删除。这会导致应用程序的不可用时间。
以下是一些可以提高 StatefulSet 更新速度的建议:
- **使用自定义的更新策略。可以使用“暂停更新”策略,在更新所有 Pod 之前暂停应用程序。
- **使用快照存储。**快照存储可以加快存储卷数据的复制速度。
- **使用复制 Pod。**复制 Pod 可以提高应用程序的可用性。
相关文章:
POD创建与删除简单描述
创建一个 Pod 的过程可以分为以下几个步骤: 用户使用 kubectl create 命令或 YAML 文件向 API 服务器发送创建 Pod 的请求。API 服务器将请求转换为 Kubernetes 的内部对象,并将 Pod 的状态设置为 Pending。调度器根据 Pod 的资源需求和节点的资源情况&…...
AndroidStudio打包报错记录(commons-logging,keystore password was incorrect)
场景: AndroidStudio2022打包APK的时报错 1.commons-logging依赖冲突 报错主要信息如下 Error: commons-logging defines classes that conflict with classes now provided by Android. 通过报错信息可以看出,项目中的commons-logging与Android系统自带…...
如何构建企业数据资产?数据资产如何入资产负债表 ?
一、构建企业数据资产 1. 数据收集 需要从多渠道收集数据,包括企业内部系统、市场调研、社交媒体、客户反馈等。在收集数据时,需要注意数据的真实性、完整性和可靠性。同时,需要考虑如何将不同渠道的数据进行整合和标准化,以便后…...
代码随想录算法训练营Day 47 || 198.打家劫舍、213.打家劫舍II、337.打家劫舍 III
198.打家劫舍 力扣题目链接(opens new window) 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系…...
(论文阅读24/100)Visual Tracking with Fully Convolutional Networks
文献阅读笔记(sel - CNN) 简介 题目 Visual Tracking with Fully Convolutional Networks 作者 Lijun Wang, Wanli Ouyang, Xiaogang Wang, and Huchuan Lu 原文链接 http://202.118.75.4/lu/Paper/ICCV2015/iccv15_lijun.pdf 【DeepLearning】…...
第10章 文件和异常
目录 1. 从文件中读取数据1.1 读取整个文件1.2 逐行读取1.3 创建一个包含文件各行内容的列表 2. 写入文件2.1 写入空文件2.2 写入多行2.3 附加到文件 3. 异常使用try-except-else代码块 4. 存储数据使用json.dump()和json.load() 1. 从文件中读取数据 1.1 读取整个文件 with …...
【云栖2023】张治国:MaxCompute架构升级及开放性解读
简介: 本文根据2023云栖大会演讲实录整理而成,演讲信息如下 演讲人:张治国|阿里云智能计算平台研究员、阿里云MaxCompute负责人 演讲主题:MaxCompute架构升级及开放性解读 活动:2023云栖大会 MaxCompute发展经历了…...
【经验模态分解】4.信号由时域向频域的转换
/*** poject 经验模态分解及其衍生算法的研究及其在语音信号处理中的应用* file 傅里叶变换与小波变换* author jUicE_g2R(qq:3406291309)* * language MATLAB* EDA Base on matlabR2022b* editor Obsidian(黑曜石笔记软件&#…...
STM32的M4内核在keil上面float访问就hard_fault原因
使用 Keil MDK(Microcontroller Development Kit)开发时,出现硬件故障(hard fault)通常是由于访问浮点数(float)数据类型时,浮点单元配置不正确或浮点单元启用导致的。以下是一些可能…...
【LeetCode】217. 存在重复元素
217. 存在重复元素 难度:简单 题目 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。 示例 1: 输入:nums [1,2,3,1] 输出࿱…...
【Redis缓存架构实战常见问题剖析】
文章目录 一、Redis缓存架构实战剖析1.1、大规模的商品缓存数据冷热分离机制1.2、缓存击穿导致线上数据压力暴增解决方案1.3、缓存穿透及其解决方案剖析1.4、突发性的热点缓存数重建导致系统压力暴增问题分析1.5、Redis分布式锁解决缓存与数据库双写不一致问题剖析1.6、利用多级…...
mac M2 pytorch_geometric安装
我目前的环境是mac M2,我在base环境中安装了pytorch_geometric,仅仅做测试用的,不做真正跑代码的测试 首先我的base环境的设置如下: pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.…...
【C++】异常 智能指针
C异常 & 智能指针 1.C异常1.1.异常的抛出与捕获1.2.异常体系1.3.异常安全与规范1.4.异常优缺点 2.智能指针2.1.RAII2.2.智能指针的使用及原理2.2.1.auto_ptr2.2.2.unique_ptr2.2.3.shared_ptr2.2.4.shared_ptr的循环引用问题 & weak_ptr 2.3.定制删除器 1.C异常 C异常…...
切换数据库的临时表空间为temp1 / 切换数据库的undo表空间为 undotbs01
目录 编辑 一、切换临时表空间 1、登录数据库 2、查询默认临时表空间 3、创建临时表空间temp1(我们的目标表空间) 4、修改默认temp表空间 5、查询用户默认临时表空间 6、命令总结: 二、切换数据库的undo表空间 1、查询默认undo表…...
react: scss使用样式
方式一: 将样式作为模块使用 //List.tsx import styles from /styles/apppublish.module.scss <div className{styles.contentOverflow}></div>//apppublish.module.scss .contentOverflow {height: 100%;overflow-y: auto;display: flex;flex-directi…...
JAVA深化篇_36—— Java网络编程中的常用类
Java网络编程中的常用类 Java为了跨平台,在网络应用通信时是不允许直接调用操作系统接口的,而是由java.net包来提供网络功能。下面我们来介绍几个java.net包中的常用的类。 InetAddress的使用 作用:封装计算机的IP地址和DNS(没…...
python操作链接数据库和Mysql中的事务在python的处理
python操作数据库 pymysql模块: pip install pymysql作用:可以实现使用python程序链接mysql数据库,且可以直接在python中执行sql语句 添加操作 import pymysql #1.创建链接对象c conn pymysql.Connect(host127.0.0.1,#数据库服务器主机地址port3306, #mysql的端口…...
【qemu逃逸】XCTF 华为高校挑战赛决赛-pipeline
前言 虚拟机用户名: root 无密码 设备逆向与漏洞分析 程序没有去符合, 还是比较简单. 实例结构体如下: 先总体说一下流程: encode 为 base64 编码函数, decode 为 base64 解码函数. 然后 encPipe 和 decPipe 分别存放编码数据和解码数据, 分别有四个: 其中 EncPipeLine 中…...
muduo源码剖析之TcpClient客户端类
简介 muduo用TcpClient发起连接,TcpClient有一个Connector连接器,TCPClient使用Conneccor发起连接, 连接建立成功后, 用socket创建TcpConnection来管理连接, 每个TcpClient class只管理一个TcpConnecction,连接建立成功后设置相应的回调函数…...
C语言——switch语句判断星期
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int day 0;scanf("请输入1-7之间的整数:%d",&day);switch(day){case 1:printf("星期一\n");break;case 2:printf("星期二\n");break;case 3:printf(&quo…...
Ubuntu 18.04 + CUDA 9.0 环境下,保姆级避坑指南:从源码编译GCC 4.9.2到成功运行DensePose
Ubuntu 18.04 CUDA 9.0 环境下GCC 4.9.2源码编译全攻略:破解DensePose安装的核心难题 在计算机视觉领域,DensePose作为将2D图像中的人体像素映射到3D表面模型的重要工具,其安装过程却常常让开发者望而生畏。特别是在Ubuntu 18.04和CUDA 9.0环…...
别再折腾SDK了!用我改好的bundle.js,5分钟搞定网站Live2D看板娘(moc3格式)
5分钟极简部署:零配置玩转Live2D网页看板娘(moc3格式) 你是否曾在个人博客上看到那些会眨眼、转头的小看板娘,却苦于官方SDK的复杂配置而放弃?今天我要分享的这套方案,能让你跳过所有技术深坑——不需要懂…...
别再只会load(‘data.mat‘)了!Matlab数据加载的5个隐藏技巧与实战避坑
别再只会load(data.mat)了!Matlab数据加载的5个隐藏技巧与实战避坑 每次看到同事在Matlab里反复输入load(data.mat)时,我都忍不住想冲过去分享几个能节省半小时的冷门技巧。作为从学生时代就被Matlab"折磨"过来的老用户,我踩过的坑…...
运营岗最需要哪些数据分析技能?
运营岗数据分析核心技能运营岗位需要掌握的数据分析技能涵盖数据收集、处理、可视化及业务决策支持等多个方面。以下从核心技能、工具应用、业务场景及认证价值(如CDA数据分析师证书)展开详细说明,并结合表格整理关键内容。核心技能分类技能类…...
手把手教你下载和安装Lattice Diamond(含3.12与3.13新版保姆级步骤)
从零开始掌握Lattice Diamond安装:3.12/3.13版本全流程指南 第一次接触FPGA开发环境的新手们,面对Lattice Diamond这类专业软件时难免手足无措。本文将带你一步步完成从软件下载到成功运行的完整过程,特别针对最新3.12和3.13版本中那些容易让…...
std::shared_ptr 的引用计数是原子的——但你知道这“原子“到底多贵吗
一个 shared_ptr 的拷贝,在单线程无竞争的情况下大约 5-8 纳秒(具体数字因 CPU 微架构和频率而异,下文的延迟数据均取典型 x86 服务器芯片的量级)。在 8 个线程同时拷贝同一个对象的 shared_ptr 时,这个数字可以膨胀到 200 纳秒以上。 40 倍。 不是因为你写了锁,不是因…...
从玩具车到智能车:给你的51单片机循迹小车加上LCD1602和蓝牙遥控(HC-05/06)
从玩具车到智能车:51单片机循迹小车的LCD1602与蓝牙遥控升级指南 当你看着自己亲手组装的51单片机循迹小车沿着黑线平稳运行时,那种成就感不言而喻。但作为创客,我们总想让项目更上一层楼——为什么不给它加上实时数据显示和手机遥控功能&…...
DownKyi:解锁B站视频自由存取的数字工具箱
DownKyi:解锁B站视频自由存取的数字工具箱 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等)。 …...
从‘找相似’到‘算增量’:图解DIC核心算法FA-GN与IC-GN,搞懂它们到底在优化什么
图像匹配的两种思维:FA-GN与IC-GN算法可视化解析 在材料科学、生物力学和工程测量领域,数字图像相关技术(DIC)如同一位精准的"图像侦探",通过分析变形前后的图像差异来捕捉微观形变的蛛丝马迹。这项技术的核…...
QuickLook OfficeViewer插件技术实现深度解析:无Office环境下的文档预览终极指南
QuickLook OfficeViewer插件技术实现深度解析:无Office环境下的文档预览终极指南 【免费下载链接】QuickLook.Plugin.OfficeViewer Word, Excel, and PowerPoint plugin for QuickLook. 项目地址: https://gitcode.com/gh_mirrors/qu/QuickLook.Plugin.OfficeView…...
