首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kubernetes Pod 删除操作源码解析

minio-875749785-sv5ns pod "minio-875749785-sv5ns" deleted 删除之前另外一个终端观察应用状态: ☸ ➜ kubectl get pods...优雅删除 由于 Pod 中涉及到其他很多资源,比如 sandbox 容器、volume 卷等等,删除后都需要进行回收,而删除 Pod 最终也是去删除对应的容器,这个就需要 Pod 所在节点的 kubelet...最终都会调用 killPod 函数去执行删除 Pod: killPod 函数中会调用容器运行时去停止该 Pod 中的容器,代码位于https://github.com/kubernetes/kubernetes...该函数中,利用多个 goroutine 来对 Pod 中的每一个容器进行删除删除容器的方法是 killContainer,该函数中首先会执行 pre-stop 这个 hooks(如果存在的话),然后才停止容器...同步状态 对于优雅删除一开始 apiserver 只是给 Pod 设置了 DeletionTimestamp 属性,然后 kubelet watch 来更新后去完成了 Pod 的优雅删除,但是现在服务端中还有

1.4K20

【TKE】Kubernetespod创建流程

一般我们创建pod的过程中都是,执行kubectl命令去apply对应的yaml文件,但是执行这个操作的过程到pod被完成创建,k8s的组件都做了哪些操作呢?下面我们简要说说pod创建的过程。...Controller-Manager通过apiserver的watch接口发现了pod信息的更新,执行该资源所依赖的拓扑结构整合,整合后将对应的信息交给apiserver,apiserver写到etcd...Scheduler同样通过apiserver的watch接口更新到pod可以被调度,通过算法给pod分配节点,并将pod和对应节点绑定的信息交给apiserver,apiserver写到etcd。...kubelet从apiserver获取需要创建pod信息,调用CNI接口给pod创建pod网络,调用CRI接口去启动容器,调用CSI进行存储卷的挂载。...网络,容器,存储创建完成后pod创建完成,等业务进程启动后,pod运行成功。

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

    StatefulSet-创建删除Pod的过程

    创建Pod,StatefulSet会首先创建一个具有序号为0的Pod,等待这个Pod处于Running状态后,再创建一个具有序号为1的Pod,以此类推。...创建Pod,StatefulSet会将这个唯一标识符存储Pod的metadata.annotations字段中,以便后续的Pod可以通过这个标识符进行服务发现。...初始化容器创建Pod后,Kubernetes会在Pod中初始化一个Init容器,用于Pod启动之前执行一些初始化任务。...StatefulSet中,Init容器通常用于Pod启动之前创建一些必要的资源,比如磁盘卷。启动容器Init容器执行完毕后,Kubernetes会启动Pod中的容器。...删除PodKubernetes会停止容器中的进程,并卸载Pod中的磁盘卷。删除磁盘卷如果Pod中使用了磁盘卷,StatefulSet会在删除Pod删除这些磁盘卷。

    59220

    StatefulSet-创建删除Pod的过程示例

    当我们创建这个StatefulSetKubernetes会按照以下顺序创建3个Pod创建一个名为nginx-0的Pod,并为它分配一个唯一的标识符:nginx-0.nginx-headless.default.svc.cluster.local...当我们需要删除一个或多个Pod,可以使用以下命令:kubectl delete pod 如果我们需要删除整个StatefulSet及其所有Pod,可以使用以下命令:kubectl...delete statefulset 删除StatefulSetKubernetes会按照相反的顺序删除每个Pod,然后删除Headless Service和StatefulSet...如果我们想保留数据,可以删除StatefulSet之前手动备份数据。现在,假设我们想要删除nginx-0这个Pod。...当我们运行以下命令:kubectl delete pod nginx-0Kubernetes会按照以下顺序执行删除Pod的过程:清除服务发现信息StatefulSet会从Headless Service

    36520

    Kubernetespod中配置hosts解析域名

    当 DNS 配置以及其它选项不合理的时候,通过向 Pod 的 /etc/hosts 文件中添加条目,可以 Pod 级别覆盖对主机名的解析。... 1.7 版本后,用户可以通过 PodSpec 的 HostAliases 字段来添加这些自定义的条目。...建议通过使用 HostAliases 来进行修改,因为该文件由 Kubelet 管理,并且可以 Pod 创建/重启过程中被重写 因为TKE的界面暂时不支持HostAliases 配置,所有这个字段的配置只能通过控制台修改...kubectl命令修改yaml来配置 apiVersion: apps/v1beta2 kind: Deployment metadata: annotations: deployment.kubernetes.io...内进行验证,查看下pod的/etc/hosts文件是否有加上配置的域名解析 root@nginx-hosts-alis-5db8d7c54c-gf6km:/# cat /etc/hosts # Kubernetes-managed

    6.9K42

    《一起读 kubernetes 源码》kubelet 如何创建 pod

    还是那句话,我是来看 pod 如何创建的。所以其他的什么 if 判断全部都可以扔掉,因为它们都是处理 pod 的其他状态,对于创建无关。...我们稍后文章再说,你可以简单理解为这里创建 pod 所需要的环境。...其中我们关注到两个步骤: 步骤 6:创建 init 容器,这就是我们会在实际中用到的 spec 中配置 initContainers,能帮助你真正的业务容器启动前运行一些容器去初始化一些数据或环境变量... syncLoop 中有 updates chan 这个通道传递了 kubetypes.PodUpdate 事件,有事件(创建的事件)来的时候就会创建 pod。...答案就是 MirrorPod 如果还是不理解,我总结的不一定完整,建议看原文的参考文档: https://kubernetes.io/docs/tasks/configure-pod-container

    19210

    研发工程师玩转Kubernetes——通过文件创建Pod

    《研发工程师玩转Kubernetes——部署应用》中,我们使用kubectl run命令启动了一个可以kubernetes集群内部访问的nginx——它不可以通过物理机访问。...而我们使用文件创建,则可以通过设置相关参数,让nginx可以通过物理机地址访问。 创建Pod 将下列内容保存到nginx.yaml文件中。...: nginx-container image: nginx ports: - containerPort: 80 hostPort: 80 然后文件所在目录执行...kubectl create -f nginx.yaml 创建成功后,我们可以通过下面指令查看创建Pod kubectl describe pod nginx 得到如下信息 Name:...文件解读 Kubernetes的资源描述文件一般分成“类型信息”、“元信息”和“规约信息”。 类型信息 apiVersion: v1 kind: Pod 作为一种协议,不同的版本会有不同的格式。

    25720

    Kubernetes中资源紧缺Pod驱逐机制

    图片Kubernetes中的Pod驱逐机制是通过调度器(scheduler)来实现的。当资源紧缺,调度器会根据一定的策略选择需要被驱逐的Pod。...以下情况会触发Pod驱逐机制:节点不可用:如果某个节点发生故障或被标记为不可调度状态,其上的所有Pod都会被驱逐并重新调度到其他可用节点上。...资源不足:当集群中的资源(如CPU、内存)紧缺,调度器会根据各个Pod的优先级和资源需求来选择需要驱逐的Pod。...调整Pod驱逐机制以适应特定的业务需求可以通过以下方法实现:设置Pod的资源请求和限制:通过合理设置Pod的资源请求和限制,可以影响调度器资源紧缺选择需要驱逐的Pod。...使用PodDisruptionBudget(PDB):PDB是一种资源对象,可以限制同时被驱逐的Pod的数量,确保集群中总是有足够的可用Pod。通过创建和配置PDB,可以灵活地控制Pod的驱逐行为。

    31871

    k8s 缩容删除pod的选择

    的缩容逻辑,一般不会关心deployment管理的各pod缩容的优先级。...但笔者近期遇到一个实际的问题,简言之则是集群中的节点有一些是包年包月的节点,有一些是按量付费的节点,按量付费的节点在节点空闲的时候会触发回收逻辑,因此就希望deployment缩容能够优先删除运行在按量付费的节点上的...基于该背景,笔者决定深入k8s的调度器的源码中,对缩容选择pod的机制一探究竟,并研究是否能够通过某种方式介入该过程。...(k8s v0.22新特性),用于手动指定pod删除优先级 Ready且pod-deletion-cost相同的pod,则优先删除pod所在Node中同一个RS控制器控制的pod数量较多的pod 优先删除...Ready时间更晚的pod Ready时间相同时,优先删除Container的重启次数较少的 上述条件相同时,优先删除创建时间较新的pod 结论 根据上述规则,简单整理可知,deployment需要对

    93410

    Kubernetes K8S之通过yaml文件创建PodPod常用字段详解

    YAML语法规范;kubernetes k8s中如何通过yaml文件创建pod,以及pod常用字段详解 YAML 语法规范 K8S 里所有的资源或者配置都可以用 yaml 或 Json 定义。...具体参见:「YAML 语言教程与使用案例」 通过yaml创建nginx pod对象 yaml文件 Kubernetes的 yaml文件中,最好不要出现下划线,可以有中横线。...且下面的两个日志文件也是容器启动创建的 2 total 4 3 -rw-r--r-- 1 root root 0 May 20 23:04 access.log 4 -rw-r--r-- 1 root...当Pod因为某些原因被从节点上删除,emptyDir卷中的数据也会永久删除。...当container因为OOM被kill掉,系统倾向于在其原所在的机器上重启该container或本机或其他重新创建一个pod

    3.9K32

    Kubernetes Pod 中如何获取客户端的真实 IP

    本篇主要解答了 Kubernetes 集群中负载如何获取客户端真实 IP 地址这个问题。 ❞ 创建一个后端服务 服务选择 这里选择 containous/whoami 作为后端服务镜像。... Dockerhub 的介绍页面,可以看到访问其 80 端口,会返回客户端的相关信息。代码中,我们可以 Http 头部中拿到这些信息。...创建服务 创建企业空间、项目 如下图所示,这里将企业空间和项目命名为 realip ? 创建服务 这里创建无状态服务,选择 containous/whoami 镜像,使用默认端口。 ?...当请求落到没有服务 Pod 的节点,将无法访问。...用 curl 访问,会一直停顿 TCP_NODELAY , 然后提示超时: * Trying 139.198.112.248... * TCP_NODELAY set * Connection

    4.7K20

    Kubernetes 中,Pod 间实现共享内存的解决方案

    一些公共服务组件追求性能的过程中,大多会出现与业务耦合过紧的情况。同时,工程师们制作基础镜像,会把这些基础组件都打包进去。...当某些 Agent 存在 Bug(比如内存泄漏),必将导致 Pod 被重建,甚至 cgroup OOM 会将业务进程 kill; 违背了 Kubernetes&微服务部署的最佳实践:业务进程容器前台运行...这将导致 Kubernetes 无法根据业务进程状态关联到容器状态,进而使得 Kubernetes 无法及时自愈; 如果一个 Node 上运行 10 个 Pod,那么就会有 ×10 的基础组件数量 Node...因为你需要重新打所有业务镜像,同时全网业务也需要进行灰度升级。因为只要有一个 Agent 升级,你就需要重新构建业务的 Pod,这是一个令人厌烦的过程。...首先创建好对应的 Kubernetes ClusterRole、SA、ClusterRoleBinding 和 PSP Object。

    3.1K30
    领券