首页
学习
活动
专区
圈层
工具
发布

Kubernetes Pod 删除操作源码解析

接下来我们会从代码角度来介绍下删除 Pod 的整体流程。 这里我们以 v1.22.8 版本的 Kubernetes 为例进行说明,其他版本不保证代码完全一致,但是整体思路是一致的。...优雅删除 由于 Pod 中涉及到其他很多资源,比如 sandbox 容器、volume 卷等等,在删除后都需要进行回收,而删除 Pod 最终也是去删除对应的容器,这个就需要 Pod 所在节点的 kubelet.../kubernetes/blob/v1.22.8/pkg/kubelet/kubelet.go#L2040-L2079 中,如下所示: 当执行删除操作的时候,apiserver 首先会更新 Pod 中的...最终都会调用 killPod 函数去执行删除 Pod: killPod 函数中会调用容器运行时去停止该 Pod 中的容器,代码位于https://github.com/kubernetes/kubernetes...Pod 的记录,并没有真正去删除。

1.9K20

Kubernetes中的多容器Pod和Pod内容器间通信

本文会讨论将多个容器整合进单个Kubernetes Pod 中,以及Pod中的容器之间是如何通信的。 1. 关于Kubernetes Pod 1.1 Kubernetes Pod 是什么?...首先我们来探讨下什么是Pod。Pod是Kubernetes中最小的可部署和管理单元。换句话讲,如果需要在Kubernetes中运行单个容器,那么你就得为这个容器创建一个Pod。...1.3 为什么Kubernetes允许Pod中存在一个或多个容器? Pod中的容器们运行在一个逻辑“主机”上。...如果Pod被删除了,即使一模一样的Pod被创建出来,原来Pod的共享卷也会被销毁,一个新的共享卷会被创建出来。...每秒钟,2nd容器会将当前日期和时间写入到共享卷之中的index.html文件。当用户向Pod发送HTTP请求时,Nginx读取这个文件的内容并返回给用户。 ?

4.7K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Kubernetes的pod解析

    它负责管理 Kubernetes 环境中容器的生命周期管理,包括创建、启动、停止和删除容器等操作。 你可以允许集群为一个 Pod 选择其默认的容器运行时。...Pod与Runtime:Pod中的容器由容器运行时管理,它们共享存储、网络和运行选项 ::: Pod 前面这些基础知识是我们学习kubernetes基本必须要掌握的内容。...Kubernetes API Server 接收到创建 Pod 的请求后,会对请求进行验证(验证文件的合法性、格式、内容类型等等)和授权检查。验证成功之后。...::: Pod销毁 :::info Pod销毁的流程 用户发起删除请求kubectl delete pod pod-name> 然后通过API Server处理删除请求 API Server 接收到删除...对于有状态服务(绑定了持久卷声明PersistentVolumeClaim(PVC) ), 控制器管理器会更新PVC 。 发送sigterm信号给容器,清理资源。

    1.2K10

    kubernetes中的pod

    在Kubernetes中,Pod是最小的可部署单元。Pod是一个逻辑主机,它可以包含一个或多个容器。每个Pod都有一个唯一的IP地址和一组共享的存储和网络资源。...Kubernetes使用Pod来调度和管理应用程序的运行。Pod的概念Pod是Kubernetes中最小的可部署单元。它是容器的封装,是一个或多个相关容器的运行环境。...Pod的特点Pod是Kubernetes中的基本单位,具有以下特点:逻辑主机:Pod是逻辑主机,提供了一个容器运行环境,使得容器内的应用程序可以以自己的方式运行。...生命周期:Pod拥有自己的生命周期,它可以被创建、更新和删除。共享上下文:Pod中的容器共享同一个上下文,包括共享的环境变量和运行时配置等。...保存该文件为pod.yaml,并使用以下命令创建Pod:kubectl create -f pod.yaml查看Pod可以使用以下命令查看Pod的状态:kubectl get pods删除Pod可以使用以下命令删除

    96041

    详解 Kubernetes 中的 Pod

    但我们对于 Kubernetes 最基础的 Pod 的了解仍然十分有限,本文我们就来详细介绍和讲解一下 Kubernetes 最核心的抽象 -- Pod。 2....事实上,Pod 只是 Kubernetes 中的一层逻辑概念,Kubernetes 调度的仍然是基础的容器,只是经过我们的配置,Kubernetes 将一些容器看作一个 Pod,从而能够统一调度,进而让他们处于同一个...3.2 Kubernetes 的解决方案 -- Infra 容器 Kubernetes 解决上述问题靠的是引入 Infra 容器: Infra 容器是 Pod 中隐式声明的容器,它先于其他容器的启动,...Pod 的配置 Pod 是 Kubernetes 的最小调度单位,而 Container 是 Pod 的最小组成单位。...HostAliases 用来在 Pod 的 hosts 文件(/etc/hosts)中添加的内容: apiVersion: v1 kind: pod ... spec: hostAliases:

    1.1K20

    实验手记:Kubernetes 中进行 PVC 的扩容

    Kubernetes 1.11 版本中,PVC 的扩容功能进入了 Beta 阶段,一般来说,Kubernetes 功能进入 Beta 阶段就意味着基本可以用于生产了。...这里就做几个小测试,看看这一功能的使用方法。 开始之前 首先当然是要有一个 Kubernetes 1.11 版本的集群。并且提供了支持 Auto provision 的存储。...Storageclass 不支持扩容 使用新的 Storageclass 创建 PVC 接下来我们将这个 PVC 删除,使用 exp 这个 Storageclass 重建 PVC: $ kubectl...绑定 Pod 新建一个 Deployment 来使用前面创建的 PVC: apiVersion: extensions/v1beta1 kind: Deployment metadata: name:...0 deployment.extensions/sleep scaled 在相关 Pod 消失之后,我们可以再次 describe pvc myclaim,发现这个 PVC 又一次处于等待绑定的状态中

    7.4K50

    kubernetes启动pod的过程

    编写Pod定义文件在Kubernetes中,Pod可以通过定义一个Pod定义文件来创建。这个文件包含了Pod的描述信息,包括容器的名称、镜像、端口、环境变量等。...如果一切顺利,Kubernetes将会自动完成Pod的创建和部署。Kubernetes处理Pod请求一旦我们提交了Pod定义文件,Kubernetes将会处理这个请求。...否则,Kubernetes将会解析Pod定义文件,提取出必要的信息,包括Pod的名称、容器的名称、镜像的名称等等。创建Pod一旦Kubernetes处理Pod请求成功,它将会开始创建Pod。...容器实例将会运行在Pod的网络命名空间中,并共享Pod的存储卷。配置网络当容器实例被创建后,Kubernetes将会配置Pod的网络。...监视和管理一旦Pod已经启动,Kubernetes将会监视它的状态,并确保它保持在所需的状态。如果Pod中的任何容器出现故障或崩溃,Kubernetes将会自动重启该容器,以确保Pod保持在可用状态。

    1.2K41

    k8s支持的存储_外部存储数据库

    由于kubernetes支持的存储系统有很多,要求客户全部掌握,显然不现实。为了能够屏蔽底层存储实现的细节,方便用户使用,kubernetes引入了PV和PVC两种资源对象。...使用了PV和PVC之后,工作可以得到进一步的提升: 存储:存储工程师维护。 PV:kubernetes管理员维护。(可以理解成对外暴露的一些接口) PVC:kubernetes用户维护。...o wide 创建Pod使用PVC • 创建pvc-pod.yaml文件,内容如下: apiVersion: v1 kind: Pod metadata: name: pod1 namespace...资源使用:用户可以在Pod中像volume一样使用PVC,Pod使用Volume的定义,将PVC挂载到容器内的某个路径进行使用。 资源释放: 用户删除PVC来释放PV。...当存储资源使用完毕后,用户可以删除PVC,和该PVC绑定的PV将会标记为“已释放”,但是还不能立刻和其他的PVC进行绑定。

    1.2K21

    【K8s】Kubernetes 存储简介

    PV 具有独立的生命周期,不会随着 Pod 的销毁被删除 PersistentVolumeClaim(PVC):在 Kubernetes 中,PVC(持久化卷声明)是一种与存储相关的资源对象,可以定义申请容量...、访问模式等内容。...:在 Kubernetes 中,Volumes 可以定义 Pod 内部的存储空间 Kubernetes 存储供应模式: 静态模式:由集群管理员预先手动创建 PV 对象,并与符合条件的 PVC 对象绑定...动态模式:StorageClass 会根据 PVC 对象的申请,动态创建 PV 对象并与该 PVC 对象绑定 存储分类 从 Pod Volumes 支持类型的维度看,Kubernetes 的存储大致可以分为...: 临时存储 EmptyDir:可以为处于同一 Pod 内的容器提供数据共享能力(如缓存数据),这些数据临时存储在 Pod 所在集群节点上自动分配的空目录中,会随着 Pod 的销毁被删除 持久存储 HostPath

    46010

    Kubernetes运维-持久化存储卷实践与管理

    PVC 的全称是:PersistentVolumeClaim(持久化卷声明),PVC 是用户存储的一种声明,PVC 和 Pod 比较类似,Pod 消耗的是节点,PVC 消耗的是 PV 资源,Pod 可以请求...本地存储卷 emptyDir 应用场景 实现pod内容器之间数据共享 特点 随着pod被删除,该卷也会被删除 1.创建yaml文件 # vim volume-emptydir.yml apiVersion...卷种的 index.html 文件中的内容,同样我们可以把 Pod 删除,然后再次重建再测试一次,可以发现内容还是我们在 hostPath 种设置的内容。...需要注意的是,我们上面手动创建 PV 的方式,即静态的 PV 管理方式,在删除 PV 时需要按如下流程执行操作: 删除使用这个 PV 的 Pod 从宿主机移除本地磁盘 删除 PVC 删除 PV 如果不按照这个流程的话...或pvc被删除后,pv是否删除还是保留。

    92810

    Kubernetes 中的对象是如何删除的:Finalizers 字段介绍

    假如你试图删除一个仍被 Pod 使用的 PVC,该资源不会被立即删除, 它将进入 Terminating 状态,直到 PVC 不再挂载到 Pod 上时, Kubernetes 才清除这个对象。...如果用户删除被某 Pod 使用的 PVC 对象,该 PVC 申领不会被立即移除,PVC 对象的移除会被推迟,直至其不再被任何 Pod 使用。...接下来演示 Kubernetes 是如何延迟删除 PV 和 PVC 对象的。首先删除 PV。...ctrl + c 退出 查看该 PVC,发现 PVC 同样处于 Terminating 状态,这是因为使用 PVC 的 Pod 还未删除,因此 PVC 对象此时还处于被保护状态。...接着删除 Pod,当 Pod 被删除后,由于没有 Pod 使用 PVC 了,此时 PVC 会被安全地删除;同样地,和 PV 绑定的 PVC 被删除后,PV 也可以被安全地删除了。

    5.5K10

    Kubernetes 中 PV 和 PVC 的状态变化

    我们可以通过编辑 PV,删除 PV 中的 finalizers 属性来强制删除 PV: $ kubectl edit pv nfs-pv # 按照下面所示删除 finalizers 属性中的内容 delete...manual 27m 删除 PVC 上面是先删除 PV 的情况,那么如果我们是先删除的 PVC 的话会是什么样的状况呢?...这个时候我们就需要手工去进行干预了,真实生产环境下管理员会把数据备份或迁移出来,然后修改 PV,删除 claimRef 对 PVC 的引用,这个时候 Kubernetes 的 PV 控制器 watch...直接编辑 PV 删除 cliamRef 属性中的内容即可: # 删除 cliamRef 中的内容 $ kubectl edit pv nfs-pv persistentvolume/nfs-pv edited...Kubernetes 集群中对 PV 的各种功能也做了增强,比如克隆、快照等功能都是非常有用的,我们后续再来对这些新功能进行说明。

    1.2K30

    Kubernetes 中 PV 和 PVC 的状态变化

    我们可以通过编辑 PV,删除 PV 中的 finalizers 属性来强制删除 PV: $ kubectl edit pv nfs-pv # 按照下图所示删除 finalizers 属性中的内容 编辑完成后...manual 27m 删除 PVC 上面是先删除 PV 的情况,那么如果我们是先删除的 PVC 的话会是什么样的状况呢?...这个时候我们就需要手工去进行干预了,真实生产环境下管理员会把数据备份或迁移出来,然后修改 PV,删除 claimRef 对 PVC 的引用,这个时候 Kubernetes 的 PV 控制器 watch...直接编辑 PV 删除 cliamRef 属性中的内容即可: # 删除 cliamRef 中的内容 $ kubectl edit pv nfs-pv persistentvolume/nfs-pv edited...Kubernetes 集群中对 PV 的各种功能也做了增强,比如克隆、快照等功能都是非常有用的,我们后续再来对这些新功能进行说明。

    5K50

    k8s 实践经验(十)存储卷

    Volume是Pod中能够被多个容器访问的共享目录,它被定义在Pod上,然后被一个Pod里面的多个容器挂载到具体的文件目录下,kubernetes通过Volume实现同一个Pod中不同容器之间的数据共享以及数据的持久化存储...EmptyDir是在Pod被分配到Node时创建的,它的初始内容为空,并且无须指定宿主机上对应的目录文件,因为kubernetes会自动分配一个目录,当Pod销毁时, EmptyDir中的数据也会被永久删除...使用了PV和PVC之后,工作可以得到进一步的细分: 存储:存储工程师维护 PV: kubernetes管理员维护 PVC:kubernetes用户维护 ---- PV PV是存储资源的抽象。...PVC,kubernetes负责根据PVC的声明去寻找PV,并绑定 在用户定义好PVC之后,系统将根据PVC对存储资源的请求在已存在的PV中选择一个满足条件的 一旦找到,就将该PV与用户定义的PVC...资源释放:用户删除pvc来释放pv 当存储资源使用完毕后,用户可以删除PVC,与该PVC绑定的PV将会被标记为“已释放”,但还不能立刻与其他PVC进行绑定。

    69130

    k8s的数据存储

    ● EmptyDir是在Pod被分配到Node时创建的,它的初始内容为空,并且无须指定宿主机上对应的目录文件,因为kubernetes会自动分配一个目录,当Pod销毁时,EmptyDir中的数据也会被永久删除...Delete(删除):和PV相连的后端存储完成volume的删除操作,常见于云服务器厂商的存储服务。 需要注意的是,底层不同的存储类型可能支持的回收策略不同。...Released(已释放):表示PVC被删除,但是资源还没有被集群重新释放。 Failed(失败):表示该PV的自动回收失败。...● 资源使用:用户可以在Pod中像volume一样使用PVC,Pod使用Volume的定义,将PVC挂载到容器内的某个路径进行使用。 ● 资源释放: ○ 用户删除PVC来释放PV。...○ 当存储资源使用完毕后,用户可以删除PVC,和该PVC绑定的PV将会标记为“已释放”,但是还不能立刻和其他的PVC进行绑定。

    2K30

    【重识云原生】第六章容器基础6.4.10.5节——Statefulset原理剖析

    在这种情况下,即使 Pod 被删除,它所对应的 PVC 和 PV 依然会保留下来。...从上面内容可以看出,管理有状态应用 Pod 的关键是提供稳定不变的 Pod 标识和稳定不变的存储。...当我们把这几个 Pod 删除之后,Kubernetes 会按照原先编号的顺序,创建出新的 Pod。...把这两个Pod删除之后Kubernetes会按照原先编号的顺序,创建出了两个新的 Pod,并且Kubernetes依然为它们分配了与原来相同的“网络身份”:web-0.nginx和 web-1.nginx...的 PVC;PV/PVC 通过动态卷的方式存储于远程存储服务器;当一个 Pod 被删除后,对应的 PVC 和 PV 并不会被删除,数据依然存在于远程服务器,Pod 被重建后,StatefulSet 会重新查找对应名称的

    88311

    KubeSphere 最佳实战:探索 Kubernetes 持久化存储之 NFS 终极实战指南

    今天分享的内容是 KubeSphere 最佳实战「2024」 系列文档中的 探索 Kubernetes 持久化存储之 NFS 终极实战指南。...Storage Class 的配置文件 deploy/class.yaml,重点修改以下内容: 存储类名称 存储卷删除后的默认策略 文件默认内容如下: apiVersion: storage.k8s.io...PV 名称格式是 pvc+随机字符串,所以,每次只要不删除 PVC,那么 Kubernetes 中 PV 与存储绑定将不会丢失,要是删除 PVC 也就意味着删除了绑定的文件夹,下次就算重新创建相同名称的...PVC,生成的文件夹名称也不会一致,因为 PV 名是随机生成的字符串,而文件夹命名又跟 PV 有关,所以删除 PVC 需谨慎。...删除 PVC 后,在 NFS 存储层并没有立即删除 PVC 对应的数据目录及数据,而是将原来的数据目录改名为 archived-+原有数据目录名称的形式。

    1.4K10

    CKAD考试实操指南(八)---永恒记忆:状态持久性实践技巧

    删除pod。 # 首先创建一个pod的模板文件: # kubectl: 这是Kubernetes命令行工具,用于与Kubernetes集群进行交互和管理。...常见的回收策略包括: Retain:PV保留卷中的数据,需要手动处理删除和回收。 Delete:PV删除卷中的数据,当PVC被删除时,PV也被删除。...绑定到PV:一旦PVC被创建,Kubernetes会尝试将其绑定到符合其需求的PV。PV必须满足PVC的存储容量、访问模式等需求才能成功绑定。...生命周期与删除策略:PVC的生命周期通常与Pod关联,当Pod被删除时,PVC也会被删除。可以配置PVC以指定保留或删除策略。...注意:如果调度到不同的节点,hostpath中存在的内容可能不一致 PersistentVolumeClaim (PVC) :PVC是一种用于声明和请求持久性存储资源的卷类型。

    74020
    领券