学习
实践
活动
专区
工具
TVP
写文章

优雅停止Pod

作者: 吴叶磊 一直以来我对优雅地停止 Pod 这件事理解得很单纯:不就利用是 PreStop hook 做优雅退出吗? 但最近发现很多场景下 PreStop Hook 并不能很好地完成需求,这篇文章就简单分析一下“优雅地停止 Pod”这回事儿。 1 何谓优雅停止? 到了分布式系统中,优雅停止就不仅仅是单机上进程自己的事了,往往还要与系统中的其它组件打交道。 假如类似的事情发生了,为了业务稳定和数据安全,我们就不能强制关闭 Pod,而应该停止操作过程,通知工程师介入。 这时,上面所说的 Pod 退出流程就不再适用了。 但这种办法存在一个问题就是实现起来比较复杂,我们需要自己实现一个控制器,在其中实现细粒度的控制逻辑并且在 Controller 的控制循环中不断去检查能否安全停止 Pod

1.4K71

Kubernetes 中如何保证优雅地停止 Pod

作者:吴叶磊 一直以来我对优雅地停止 Pod 这件事理解得很单纯:不就利用是 PreStop hook 做优雅退出吗? 但最近发现很多场景下 PreStop Hook 并不能很好地完成需求,这篇文章就简单分析一下“优雅地停止 Pod”这回事儿。 何谓优雅停止? 到了分布式系统中,优雅停止就不仅仅是单机上进程自己的事了,往往还要与系统中的其它组件打交道。 假如类似的事情发生了,为了业务稳定和数据安全,我们就不能强制关闭 Pod,而应该停止操作过程,通知工程师介入。 这时,上面所说的 Pod 退出流程就不再适用了。 但这种办法存在一个问题就是实现起来比较复杂,我们需要自己实现一个控制器,在其中实现细粒度的控制逻辑并且在 Controller 的控制循环中不断去检查能否安全停止 Pod

6.3K70
  • 广告
    关闭

    【玩转 GPU】有奖征文

    精美礼品等你拿!

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

    Kubernetes 中如何保证优雅地停止 Pod

    一直以来我对优雅地停止 Pod 这件事理解得很单纯:不就利用是 PreStop Hook 做优雅退出吗? 但最近发现很多场景下 PreStop Hook 并不能很好地完成需求,这篇文章就简单分析一下“优雅地停止 Pod”这回事儿。 何谓优雅停止? 到了分布式系统中,优雅停止就不仅仅是单机上进程自己的事了,往往还要与系统中的其它组件打交道。 假如类似的事情发生了,为了业务稳定和数据安全,我们就不能强制关闭 Pod,而应该停止操作过程,通知工程师介入。 这时,上面所说的 Pod 退出流程就不再适用了。 但这种办法存在一个问题就是实现起来比较复杂,我们需要自己实现一个控制器,在其中实现细粒度的控制逻辑并且在 Controller 的控制循环中不断去检查能否安全停止 Pod

    1.2K20

    【容器TKE】K8s云服务如何实现容器优雅停止Pod容器服务?

    场景描述: 更新工作负载时,Pod 的优雅退出,使客户端不会感受到更新时产生的抖动和错误。 当 Pod 需要被删除时,Pod 能够处理完已接受到的请求,此时入流量关闭,但出流量仍能走通。 直到处理完所有已有请求和 Pod 真正删除时,出入流量才进行关闭。 此时调整 CLB 到该 Pod 的权重为 0。 kube-proxy 更新转发规则,将 Pod 从 service 的 endpoint 列表中摘除掉,新的流量不再转发到该 Pod。 如果 Pod 配置了 preStop Hook ,将会执行。 kubelet 将对 Pod 中各个 container 发送 SIGTERM 信号,以通知容器进程开始优雅停止。 等待容器进程完全停止,如果在 terminationGracePeriodSeconds 内 (默认30s) 还未完全停止,将发送 SIGKILL 信号强制停止进程。

    55661

    Pod

    Pod是资源对象模型中由用户创建或部署的最小资源对象模型,也是K8s上运行容器应用的资源对象, 其他的资源对象都是用来支撑或扩展Pod对象的功能 比如 控制器对象是用来管控Pod对象 service或ingress 资源对象是用来暴露Pod引用对象 PersistentVolume资源对象是为Pod提供存储的 k8s 不会直接处理容器,而是PodPod由一个或多个container组成 Pod是K8s的最重要的概念,每一个Pod都有一个特殊的被称之为根容器的Pause容器。Pause容器对应的镜像属于K8s的一部分。 除了Pause容器,每个Pod还包含一个或多个紧密相关的用户业务容器 基本概念 最小部署单位 包含多个容器(一组容器的集合) 同一个Pod容器共享网络命名空间(同一个Pod,共享网络) Pod短暂存在 一个容器有进程,一个容器运行一个应用程序 Pod是“多进程”设计,运行多个应用程序 Pod的存在,为了亲密性 两个应用需要进行交互 网络外部隔离,内部互通 Pod共享实现机制 共享网络 容器本身之间相互隔离

    41310

    Pod 介绍

    一、什么是 PodPod 是 kubernetes 集群中最小的部署和管理的基本单元,协同寻址,协同调度。 ​Pod 是一个或多个容器的集合,是一个或一组服务(进程)的抽象集合。 ​ 同一个 Pod 里的容器之间仅需通过 localhost 就能互相通信。 二、Pod 的网络 每个Pod被分配了唯一的IP地址,该Pod内的所有容器共享一个网络空间,包括IP和端口。 同个Pod不同容器之间通过localhost通信,Pod内端口不能冲突。 不同Pod之间的通信则通过IP+端口的形式来访问到Pod内的具体服务(容器)。 Pod中,同个Pod中的多个容器之间互相访问可以通过localhost来通信。 ​ kebectl describe pod Pod名称 -n 空间名称,如果不指定则默认显示default空间内的 pod 删除 kubectl delete pod Pod名称 / kubectl delete

    43710

    优雅停止 SpringBoot 服务,拒绝 kill -9 暴力停止

    在使用 SpringBoot 的时候,都要涉及到服务的停止和启动,当我们停止服务的时候,很多时候大家都是kill -9 直接把程序进程杀掉,这样程序不会执行优雅的关闭。 我们很多时候都需要安全的将服务停止,也就是把没有处理完的工作继续处理完成。比如停止一些依赖的服务,输出一些日志,发一些信号给其他的应用系统,这个在保证系统的高可用是非常有必要的。 那么咱么就来看一下几种停止 SpringBoot 的方法。 curl -X POST http://localhost:3333/actuator/shutdown 以下日志可以输出启动时的日志打印和停止时的日志打印,同时程序已经停止。是不是比较神奇。 ? 写一个start.sh用于启动springboot程序,然后写一个停止程序将服务停止

    97610

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • Serverless 容器服务

      Serverless 容器服务

      弹性容器服务(EKS)是腾讯云容器服务推出的无须用户购买节点即可部署工作负载的服务模式。弹性容器服务 EKS 兼容原生 Kubernetes,支持使用原生方式购买、管理资源,并扩展支持腾讯云的存储、网络等产品,开箱即用。弹性容器服务 EKS 按容器真实使用的资源量计费,腾讯云保证用户容器的安全隔离。

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注腾讯云开发者

      领取腾讯云代金券