如何优雅的关闭 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

相关推荐

  • 如何通过宝塔面板配置ssl证书

    至于宝塔的安装以及如何安装环境搭建网站,大家可以看我们的另一篇文章: Centos7.6下宝塔安装及资产管理系统部署 基于宝塔面板配置网站ssl证书支持https访问其实很简单,不需要你懂什么技术知识。接下来你跟着我的步骤,就能成功配置网站ssl。 宝塔面板后台设置成功如图所示: 第一步:点击设置 第二步:点击右侧的SSL,选择宝塔SSL,点击申请证书 第三…

    2022年6月14日
    2.9K00
  • 如何用防火墙添加规则

    防火墙技术的功能主要在于及时发现并处理计算机网络运行时可能存在的安全风险、数据传输等问题,其中处理措施包括隔离与保护,同时可对计算机网络安全当中的各项操作实施记录与检测,以确保计算机网络运行的安全性,保障用户资料与信息的完整性,为用户提供更好、更安全的计算机网络使用体验。 系统版本:centos7.9,最好和我一样是centos7的版本,其他版本命令可能有偏…

    2022年8月10日
    2.0K00
  • nmap详细使用教程

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

    2023年2月15日
    2.1K00
  • GPG入门教程

    一、什么是GPG GPG有许多用途,本文主要介绍文件加密。至于邮件的加密,不同的邮件客户端有不同的设置,请参考Ubuntu网站的介绍。 本文的使用环境为Linux命令行。 二、安装 GPG有两种安装方式。可以下载源码,自己编译安装。   ./configure  make  make install 也可以安装编译好的二进制包。   # Debian / U…

    2023年6月15日
    1.8K00
  • 常用Centos 7防火墙配置教程

    如果我们用的可视化面板建站环境的,防火墙的设置还是相对简单,我们直接在可视化面板上面添加放行或者限制的端口。当然提醒大家也不要忘记在服务器端安全组的设置,有些服务商是必须强制使用安全组的。 在这篇文章中,记录CentOS7防火墙的开放端口设置方法,比如我们有一些常用的端口是如何设置。当然这个是针对直接在服务器端SHELL命令设置的,如果我们有直接可视化设置那…

    2022年6月8日
    4.9K10

发表回复

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

在线咨询: QQ交谈

邮件:712342017@qq.com

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

关注微信