如何优雅的关闭 Kubernetes 中运行的 Pod

当我们使用命令 kubectl delete pod,Pod 就会被删除,端点控制器会从服务和 etcd 中移除其 IP 地址和端口(端点)。

你可以使用 kubectl describe service 命令来观察这个过程。

如何优雅的关闭 Kubernetes 中运行的 Pod

但这还不够!

有几个组件同步本地的端点列表:

  • kube-proxy 保留了一个本地的端点列表,用于编写 iptables 规则。
  • CoreDNS 使用端点来重新配置 DNS 条目。

对于 Ingress 控制器、Istio 等也是如此。

如何优雅的关闭 Kubernetes 中运行的 Pod

所有这些组件都会(最终)移除之前的端点,以便再也没有流量可以到达它。同时,kubelet 也会被通知更改并删除 Pod。

那么,当 kubelet 在其他组件之前删除 Pod 时会发生什么呢?

如何优雅的关闭 Kubernetes 中运行的 Pod

不幸的是,你会经历停机时间,因为像 kube-proxy、CoreDNS、ingress 控制器等组件仍然使用该 IP 地址来路由流量。

那么你能做什么呢?

等待!

如何优雅的关闭 Kubernetes 中运行的 Pod

如果你在删除 Pod 之前等待足够长的时间,正在进行的流量仍然可以处理的,新的流量可以被分配给其他 Pods。

那么应该如何等待呢?

如何优雅的关闭 Kubernetes 中运行的 Pod

当 kubelet 删除一个 Pod 时,它会经历以下步骤:

  • 触发 preStop 钩子(如果有的话)。
  • 发送 SIGTERM 信号。
  • 发送 SIGKILL 信号(30 秒后)。
如何优雅的关闭 Kubernetes 中运行的 Pod

你可以使用 preStop 钩子来插入人为的延迟。

如何优雅的关闭 Kubernetes 中运行的 Pod

你可以在你的应用程序中监听 SIGTERM 信号并等待。

此外,你可以在等待结束时优雅地停止进程并退出。

Kubernetes 会给你 30 秒来做这件事(可配置),如下代码所示:

如何优雅的关闭 Kubernetes 中运行的 Pod

那么你应该等待 10 秒、20 秒还是 30 秒呢?

事实上这并没有统一的答案。

虽然传播端点可能只需要几秒钟,但 Kubernetes 并不保证任何时间,也不保证所有组件都会在同一时间完成。

如何优雅的关闭 Kubernetes 中运行的 Pod

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/9142

(0)
郭靖的头像郭靖
上一篇 2023年7月17日 下午5:19
下一篇 2023年7月20日 下午4:45

相关推荐

  • centos7 配置L2TP

    vpn搭建完毕,再windows中添加vpn ,填入vpn.sh中填入的信息 若vpn连接失败 修改添加的vpn属性,勾选选项。

    2023年4月27日
    1.5K00
  • AutoGPT 安装教程! 保姆级的演示过程,一步一步教你完成本地部署!

    1.AutoGPT 安装之前,请确保已经具备以下几项条件: 2.下载项目代码,在一个文件夹下打开终端,克隆项目 下载完成后,cd 到项目路径下 安装依赖 运行以下代码安装所需要的依赖 3.获取自己的OpenAI的密钥,【点击获取】, 创建自己的密钥以后,在AutoGPT文件下找到配置文件:.env.template ,在里面替换自己的openAI key 4…

    2023年4月20日
    2.2K00
  • Nmon使用方法

    一、简介 1、nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,它能在系统运行过程中实时地捕捉系统资源的使用情况,记录的信息比较全面, 并且能输出结果到文件中,然后通过nmon_analyzer工具产生数据文件与图形化结果。 2、nmon可监控的数据类型 内存使用情况 磁盘适配器 文件系统中的可用空间 CPU使用率 页面空间和页面速度…

    2022年8月23日
    2.0K00
  • Cisco交换机与路由器命令

    1.查看信息show version 查看版本及引导信息show running-config 查看运行设置show startup-config 查看开机设置show interface g0/1 显示端口信息show ip router 显示路由信息show clock 查看系统时钟show log 查看日志show interface counters…

    2023年12月12日
    1.3K00
  • nmap详细使用教程

    nmap简单使用 语法格式 例如,下面扫描的是www.baidu.com,输出的是基本信息及开放的TCP端口的列表: 以上显示,端口80和443在目标主机上开放。 获得更详细的扫描中间过程输出,可以使用-v或-vv 选项: 执行以下命令可扫描目标主机的TCP端口: 其中,-sT选项代表扫描TCP端口, -p-扫描所有端口(65535个)。…

    2023年2月15日
    1.5K00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信