关于云原生:kubernetes集群之Pod说能不能让我体面的消亡呀

62次阅读

共计 1688 个字符,预计需要花费 5 分钟才能阅读完成。

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/11huL… 提取码:sa88

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

正文完
 0