前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kubernetes集群之Pod说能不能让我体面的消亡呀?

kubernetes集群之Pod说能不能让我体面的消亡呀?

原创
作者头像
囧么肥事
修改2022-03-14 20:34:47
6040
修改2022-03-14 20:34:47
举报
文章被收录于专栏:胡说八道-k8s胡说八道-k8s

kubernetes集群之Pod说能不能让我体面的消亡呀?

由于 Pod 所代表的是在集群中节点上运行的进程,当不再需要这些进程时允许其体面地终止。

1、如果 preStop 回调所需要的时间长于默认的体面终止限期会发生什么?

2、 Pod 的体面终止限期是默认值是多少?

3、超出终止宽限期限时,kubelet 会触发强制关闭过程,这个过程是怎么样的?

4、强制删除 StatefulSet 的 Pod,会出现什么问题?为什么强制删除 StatefulSet 的 Pod可能会违背至多一个Pod原则?

囧么肥事-胡说八道

1、Pod 的体面终止限期是默认值是多少?

默认情况下,所有的删除操作都会附有 30 秒钟的宽限期限。

kubectl delete 命令支持 --grace-period=<seconds> 选项,允许你重载默认值, 设定自己希望的期限值。

将宽限期限强制设置为 0 意味着立即从 API 服务器删除 Pod。

如果 Pod 仍然运行于某节点上,强制删除操作会触发 kubelet 立即执行清理操作。

说明: 你必须在设置 --grace-period=0 的同时额外设置 --force 参数才能发起强制删除请求。

2、Pod体面终止过程是怎么样的?

Pod正常终止,容器运行时会发送一个 TERM 信号到每个容器中的主进程。kubelet 开始本地的 Pod 关闭过程,API 服务器中的 Pod 对象被更新,记录涵盖体面终止限期在内 Pod 的最终死期30秒,超出所计算时间点则认为 Pod 已死(dead),之后 Pod 就会被从 API 服务器上移除。

拆分理解

  1. 发起删除一个Pod命令后系统默认给30s的宽限期,API系统标志这个Pod对象为Terminating(终止中)状态
  2. kublectl发现Pod状态为Terminating则尝试执行preStop生命周期勾子,并可多给2s的宽限期
  3. 同时控制面将Pod中svc的endpoint中移除
  4. 宽限期到则发送TERM信号,API 服务器删除 Pod 的 API 对象,同时告诉kubelet删除Pod资源对象
  5. Pod还不关闭再发送SIGKILL强制关闭,kubelet 也会清理隐藏的 pause 容器

2、超出终止宽限期限时,kubelet 会触发强制关闭过程,这个过程是怎么样的?

直接执行强制删除操作时,API 服务器不再等待来自 kubelet 的、关于 Pod 已经在原来运行的节点上终止执行的确认消息。

API 服务器直接删除 Pod 对象,无论强制删除是否成功杀死了 Pod,都会立即从 API 服务器中释放该名字。

不过在节点侧,被设置为立即终止的 Pod 仍然会在被强行杀死之前获得一点点的宽限时间。

注意:这里的强制删除主要说的是从API服务器移除Pod对象

ReplicaSets和其他工作负载资源不再将 Pod 视为合法的、能够提供服务的副本

节点端依然是可以允许Pod体面消亡

3、 如果 preStop 回调所需要的时间长于默认的体面终止限期会发生什么?

如果 Pod 中的容器之一定义了 preStop 回调勾子, kubelet 开始在容器内运行该回调逻辑。如果超出体面终止限期时,preStop 回调逻辑 仍在运行,kubelet 会请求给予该 Pod 的宽限期一次性增加 2 秒钟

4、强制删除 StatefulSet 的 Pod,会出现什么问题?为什么强制删除 StatefulSet 的 Pod可能会违背至多一个Pod原则?

强制删除不会等待来自 kubelet 对 Pod 已终止的确认消息。 无论强制删除是否成功杀死了 Pod,它都会立即从 API 服务器中释放该名字

这将让 StatefulSet 控制器可以创建一个具有相同标识的替身 Pod;因而可能导致正在运行 Pod 的重复。

StatefulSets 可用于运行分布式和集群级的应用,这些应用需要稳定的网络标识和可靠的存储。 这些应用通常配置为具有固定标识固定数量的成员集合。

具有相同身份的多个成员可能是灾难性的,并且可能导致数据丢失 (例如:票选系统中的脑裂场景)。


Kubernetes 推荐学习书

Kubernetes权威指南PDF 链接:https://pan.baidu.com/s/11huLHJkCeIPZqSyLEoUEmQ 提取码:sa88

k8s系列所有问题更新记录:GitHub

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • kubernetes集群之Pod说能不能让我体面的消亡呀?
  • 囧么肥事-胡说八道
  • 1、Pod 的体面终止限期是默认值是多少?
  • 2、Pod体面终止过程是怎么样的?
  • 2、超出终止宽限期限时,kubelet 会触发强制关闭过程,这个过程是怎么样的?
  • 3、 如果 preStop 回调所需要的时间长于默认的体面终止限期会发生什么?
  • 4、强制删除 StatefulSet 的 Pod,会出现什么问题?为什么强制删除 StatefulSet 的 Pod可能会违背至多一个Pod原则?
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com