首页 > 其他分享 >Pod的删除过程

Pod的删除过程

时间:2025-01-22 18:31:35浏览次数:1  
标签:容器 控制器 删除 Kubernetes kubelet Pod 过程

Kubernetes 中 Pod 删除的详细流程

在 Kubernetes(简称 K8s)中,删除一个 Pod 是一个多阶段的过程,涉及多个组件的协同工作。以下是 Pod 删除过程中发生的主要事件:


1. 发出删除命令

  • 用户通过命令行工具或 API 接口发出删除请求,例如:
    kubectl delete pod <pod-name>
    
  • 删除命令也可以通过控制器(如 Deployment 或 StatefulSet)间接触发,控制器会根据其管理逻辑调整 Pod 的数量。

2. API Server 响应

  • Kubernetes API Server 接收到删除请求后,会:
    • 验证用户权限,确保请求合法。
    • 将指定的 Pod 标记为 Terminating 状态。
    • 在 Pod 的元数据中添加删除时间戳(deletionTimestamp),用于触发后续操作。

3. 清理资源

在 Pod 进入 Terminating 状态后,多个清理操作开始执行:

  1. 控制器的响应:

    • 如果 Pod 是由控制器(如 Deployment 或 StatefulSet)管理的,控制器会检测到 Pod 被删除,立即启动新的 Pod 以保持期望的副本数。
  2. 生命周期钩子:

    • kubelet 检测到 Pod 状态变化后,会调用定义的生命周期钩子函数,如 preStop Hook
      这一过程为容器提供了一个优雅的终止机会,可用于执行以下任务:
      • 保存数据或日志。
      • 通知其他服务当前实例即将关闭。
      • 关闭连接或释放资源。
  3. 终止容器:

    • kubelet 与容器运行时(如 Docker、containerd)协作,按照以下顺序终止容器:
      • 首先向容器发送 SIGTERM 信号,触发正常终止流程。
      • 如果容器在设定的宽限时间(默认 30 秒,可通过 terminationGracePeriodSeconds 配置)内未完成终止,kubelet 将发送 SIGKILL 信号强制终止容器。
    • 一旦容器终止,kubelet 释放 Pod 在节点上的所有资源,包括:
      • CPU 和内存分配。
      • 磁盘存储和临时数据。
      • 网络端口及连接。

4. 垃圾回收

  1. 容器数据清理:

    • kubelet 会清理已终止容器的所有本地数据,包括镜像缓存、日志文件和运行时产生的临时文件。
  2. 持久化卷(PV)处理:

    • 如果 Pod 使用了 PersistentVolume(PV),卷的内容通常不会因 Pod 删除而丢失。
    • 卷的回收策略决定了数据的最终处理方式:
      • Retain:保留数据以供后续使用。
      • Delete:删除卷及其数据。
      • Recycle:清理卷内容以供重新分配。

5. 从 etcd 中删除记录

  • 当 kubelet 完成所有清理操作后,Kubernetes API Server 会将 Pod 的状态从 etcd 中移除。
  • etcd 是 Kubernetes 的分布式存储系统,记录集群的所有状态信息。

6. 更新集群状态

  1. 控制器调整:

    • Deployment 或 StatefulSet 等控制器会检测到 Pod 的减少,并根据定义的副本数启动新的 Pod。
    • 对于非控制器管理的 Pod(如独立 Pod),则不会有自动替换。
  2. 负载均衡更新:

    • 如果 Pod 与 Service 关联,Service 的 Endpoints 列表会自动更新,移除已删除 Pod 的 IP。
    • 负载均衡器会重新配置,确保流量只分发到健康的 Pod。

总结

在 Kubernetes 中,删除一个 Pod 是一个细致的流程,目的是在释放资源的同时,尽可能保证服务的连续性。关键步骤包括:

  1. 发出删除请求并标记 Pod 为 Terminating
  2. 调用生命周期钩子和清理资源。
  3. 终止容器,释放节点资源。
  4. 控制器和负载均衡器调整,确保集群状态与期望一致。

通过以上机制,Kubernetes 实现了优雅的 Pod 删除过程和资源管理。

标签:容器,控制器,删除,Kubernetes,kubelet,Pod,过程
From: https://www.cnblogs.com/leojazz/p/18686410

相关文章

  • 目标检测高频评价指标的计算过程
    在yolo目标检测的评价指标中有如下字段:指标的计算过程如图:计算过程从前到后,涉及到多个指标的计算,分别是:模型输出值IOU计算预测结果判断混淆矩阵计算PR以及PR曲线计算AP计算mAP计算ROC计算下面详细介绍各个步骤的涉及的概念,计算方法。模型输出在目标检测中,一张图......
  • Pod的探针区别
    Kubernetes中的Pod探针:监控容器运行状态的核心机制在Kubernetes(简称K8s)中,Pod可以通过三种类型的探针(Probe)来监控容器的运行状态,确保应用程序的健康和服务稳定性。这三种探针分别是:1.存活探针(LivenessProbe)功能:检查容器是否仍然处于正常运行状态。如果Liveness探针......
  • Pod的重启策略
    KubernetesPod的重启策略在Kubernetes(简称K8s)中,Pod的重启策略(RestartPolicy)决定了当容器失败时,kubelet应该如何处理容器的重启行为。重启策略主要由spec.restartPolicy字段定义,并适用于整个Pod中的所有容器。Kubernetes支持以下三种主要的重启策略:1.Always(默认策略......
  • 【vue3组件】【大文件上传】【断点续传】支持文件分块上传,能够在上传过程中暂停、继续
    一、概述本示例实现了一个基于Vue3和TypeScript的断点上传功能。该功能支持文件分块上传,能够在上传过程中暂停、继续上传,并且支持检测已经上传的分块,避免重复上传,提升上传效率。以下是关键的技术点与实现流程:文件分块:将大文件分成多个小块,每块的大小是固定的(例如5MB)......
  • 《零基础Go语言算法实战》【题目 7-4】删除数组重复项,使每个元素只出现一次并返回新的
    《零基础Go语言算法实战》【题目7-4】删除数组重复项,使每个元素只出现一次并返回新的长度给定一个排序数组array,就地删除重复项,使每个元素只出现一次并返回新的长度。不要为另一个数组分配额外的空间,开发者必须通过使用空间复杂度为O(1)的额外内存就地修改输入数组来做到......
  • 深入理解视图的创建与删除:数据库管理中的高级功能
    title:深入理解视图的创建与删除:数据库管理中的高级功能date:2025/1/21updated:2025/1/21author:cmdragonexcerpt:在现代数据库管理系统中,视图是一个重要的高级功能,可以为用户提供定制化的数据视图以满足特定需求。视图不仅能够简化复杂的查询,还能增强数据安全......
  • SPC统计过程管理系统(源码+文档+部署+讲解)
    引言在现代制造业中,统计过程控制(SPC)是确保产品质量和生产效率的关键。SPC统计过程管理系统作为一个创新的数字化解决方案,通过智能化管理和服务,提升了质量管理的效率和透明度。系统概述SPC统计过程管理系统采用前后端分离的架构设计,服务端基于MySQL5.7+、JDK1.8+和Redis......
  • 请问寻找网站模板修改的教程图片,以便更好地理解修改过程
     网站模板修改教程通常包含大量的图片,帮助用户更好地理解修改过程。以下是一些常见的教程图片类型:图片类型描述模板结构图展示模板的文件结构和各个文件的作用后台管理界面展示网站后台管理系统的界面和功能标签使用示例展示如何使用模板标签生成动态内容C......
  • 你开发过程中,都有用过哪些虚拟机?
    在前端开发过程中,虽然不像后端或系统管理员那样频繁使用虚拟机,但虚拟机在某些场景下仍然有其用途。以下是一些我在前端开发过程中使用过的虚拟机:VirtualBox:这是一个开源的虚拟机软件,支持多种操作系统,如Windows、Linux和MacOSX。我曾在VirtualBox中安装过不同的操作系统,以测试......
  • 你有开发过chrome插件吗?说说你的开发过程
    是的,我曾经开发过Chrome插件。Chrome插件(也称为扩展程序)允许用户为Chrome浏览器添加新功能或修改现有功能,从而提升用户体验。以下是我开发Chrome插件的基本过程:1.明确需求和功能在开始开发之前,我首先明确了插件的需求和功能。这包括确定插件要解决什么问题、提供哪些功能以及目......