共计 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 服务器上移除。
拆分了解
- 发动删除一个 Pod 命令后零碎默认给 30s 的宽限期,API 零碎标记这个 Pod 对象为
Terminating
(终止中)状态 - kublectl 发现 Pod 状态为
Terminating
则尝试执行preStop
生命周期勾子,并可多给 2s 的宽限期 - 同时管制面将 Pod 中 svc 的
endpoint
中移除 - 宽限期到则发送
TERM
信号,API 服务器删除 Pod 的 API 对象,同时通知kubelet
删除 Pod 资源对象 - 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