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

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 会执行以下步骤:
    1. 用户使用 kubectl delete 命令或 YAML 文件向 API 服务器发送删除 Pod 的请求。
    1. API 服务器将请求转换为 Kubernetes 的内部对象,并将 Pod 的状态设置为 Terminating
    1. 调度器将 Pod 的状态设置为 Terminating
    1. kubelet 将 Pod 的状态设置为 Terminating,并向 Pod 中的每个容器发送 SIGTERM 信号,通知容器准备退出。
    1. 容器在指定的超时时间内退出。如果容器在超时时间内未退出,则 kubelet 会向容器发送 SIGKILL 信号,强制容器退出。
    1. kubelet 删除 Pod 的相关资源,包括 Pod 的定义、容器的镜像、容器的日志等。
  • etcd 是 Kubernetes 集群的核心组件,负责存储 Kubernetes 的所有数据。在删除 Pod 时,etcd 需要执行以下操作:
    1. 删除 Pod 的定义。
    1. 删除 Pod 的相关资源,包括容器的镜像和容器的日志等。

白话解释

* 用户向 API 服务器说:“我要删除一个 Pod。”
* API 服务器把用户的话转换成 Kubernetes 内部的语言,然后告诉调度器:“这个 Pod 要删除了。”
* 调度器把这件事告诉 kubelet,kubelet 把这件事告诉 Pod 中的容器:“你们要被删除了。”
* 容器听到 kubelet 的话,就开始准备退出。如果容器在规定的时间内没有退出,kubelet 就会强行让它退出。
* 容器退出后,kubelet 会把 Pod 的相关资源都删除掉。etcd 是 Kubernetes 的记事本,负责记住 Kubernetes 的所有信息。在删除 Pod 时,etcd 要把 Pod 的相关信息都删除掉。

  • Kubernetes 中的 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 字段,并且该字段指定的策略为 AlwaysOnFailure
  • 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] 输出&#xff1…...

【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使用样式

方式一&#xff1a; 将样式作为模块使用 //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为了跨平台&#xff0c;在网络应用通信时是不允许直接调用操作系统接口的&#xff0c;而是由java.net包来提供网络功能。下面我们来介绍几个java.net包中的常用的类。 InetAddress的使用 作用&#xff1a;封装计算机的IP地址和DNS&#xff08;没…...

python操作链接数据库和Mysql中的事务在python的处理

python操作数据库 pymysql模块: pip install pymysql作用:可以实现使用python程序链接mysql数据库&#xff0c;且可以直接在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发起连接&#xff0c;TcpClient有一个Connector连接器&#xff0c;TCPClient使用Conneccor发起连接, 连接建立成功后, 用socket创建TcpConnection来管理连接, 每个TcpClient class只管理一个TcpConnecction&#xff0c;连接建立成功后设置相应的回调函数…...

C语言——switch语句判断星期

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int day 0;scanf("请输入1-7之间的整数&#xff1a;%d",&day);switch(day){case 1:printf("星期一\n");break;case 2:printf("星期二\n");break;case 3:printf(&quo…...

claude学习

后面会随着对claude的学习加深会逐渐更新的 文章目录后面会随着对claude的学习加深会逐渐更新的前言一、claude的三种模式二、阿里云千锤百炼前言 https://www.bilibili.com/video/BV1wuQEBDEN8/?spm_id_from333.337.search-card.all.click&vd_sourceeb433c8780bdd700f49…...

用Python玩转奥比中光Gemini Pro:从开箱到实时获取深度图与彩色图的保姆级教程

用Python玩转奥比中光Gemini Pro&#xff1a;从开箱到实时获取深度图与彩色图的保姆级教程 刚拿到奥比中光Gemini Pro相机的开发者们&#xff0c;是否迫不及待想看到它强大的深度视觉能力&#xff1f;本文将带你从零开始&#xff0c;一步步完成环境搭建、设备连接、代码调试&am…...

华为AR路由器Console密码忘了别慌,BootROM菜单里这个选项能一键清空(附不同版本默认密码)

华为AR路由器Console密码恢复实战指南&#xff1a;BootROM密码管理功能详解 凌晨三点&#xff0c;机房告警灯突然亮起&#xff0c;核心业务中断。当你火速赶到现场&#xff0c;却发现那台关键华为AR路由器的Console密码怎么输都不对——这种场景恐怕是每位网络工程师的噩梦。别…...

告别玄学调参:用Python+EXIT图可视化分析你的LDPC码性能

告别玄学调参&#xff1a;用PythonEXIT图可视化分析你的LDPC码性能 在通信系统设计中&#xff0c;LDPC码因其接近香农限的性能而备受青睐。然而&#xff0c;许多工程师在实际调参过程中常常陷入"试错-仿真-再试错"的循环&#xff0c;不仅效率低下&#xff0c;也难以系…...

3分钟上手TranslucentTB:让你的Windows任务栏变透明的完整指南

3分钟上手TranslucentTB&#xff1a;让你的Windows任务栏变透明的完整指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB TranslucentTB…...

Coolapk-UWP终极指南:在Windows上畅游酷安社区的完整解决方案

Coolapk-UWP终极指南&#xff1a;在Windows上畅游酷安社区的完整解决方案 【免费下载链接】Coolapk-UWP 一个基于 UWP 平台的第三方酷安客户端 项目地址: https://gitcode.com/gh_mirrors/co/Coolapk-UWP 你是否厌倦了在小屏幕手机上浏览酷安社区&#xff1f;是否希望在…...

配置:从零搭建Python、PyCharm、PyTorch与Anaconda的AI开发环境

1. Python安装与配置 作为AI开发的基础语言&#xff0c;Python的安装是第一步。我推荐直接从官网下载最新稳定版&#xff0c;目前主流是Python 3.8-3.11版本。安装时有个关键细节经常被忽略&#xff1a;一定要勾选"Add Python to PATH"选项。这个选项相当于给系统装了…...

【电池-超级电容器混合存储系统】单机光伏电池-超级电容混合储能系统的能量管理系统附Simulink仿真

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…...

3分钟搞定!让Windows资源管理器秒显iPhone照片缩略图的终极方案

3分钟搞定&#xff01;让Windows资源管理器秒显iPhone照片缩略图的终极方案 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC/HEIF files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails 还在…...

从AM/FM收音机到5G手机:IQ调制技术是如何一步步成为通信标配的?

从AM/FM收音机到5G手机&#xff1a;IQ调制技术是如何一步步成为通信标配的&#xff1f; 上世纪30年代&#xff0c;当AM广播首次将音乐和新闻送入千家万户时&#xff0c;很少有人能预见这种模拟调制技术会演变成今天5G手机里复杂的数字信号处理。而连接这两个时代的核心技术纽带…...