kubernetes - 在启动新 Pod 之前强制关闭 Kubernetes Pod,以防中断
问题描述
我正在尝试在 Kubernetes 中设置有状态的 Apache Flink 应用程序,我需要保存当前状态以防出现中断,例如有人删除 pod 或由于集群调整大小而重新安排它。
我向完成此行为的容器添加了一个 preStop 钩子,但是当我使用kubectl delete pod
它删除一个 pod 时,会在旧的 Pod 终止之前启动一个新的 Pod。
像这样的指南使用重新创建更新策略来确保一次只运行一个 pod。这在更新部署的情况下可以正常工作,但它不包括我上面描述的中断。我也尝试设置spec.strategy.rollingUpdate.maxSurge
为 0 但这没有任何区别。
是否可以将我的部署配置为在另一个 pod 终止之前不会启动任何 pod ,或者我是否需要切换到 StatefulSets?
解决方案
我同意 @Cosmic Ossifrage 的观点,因为StatefulSets可以轻松实现您的目标。每个 PodStatefulSets
都由 Kubernetes Engine 维护的唯一、持久的身份和稳定的主机名表示,无论它们被安排在哪里。
因此,StatefulSets
按顺序部署并以相反的顺序终止,假设 Kubernetes StatefulSet 控制器在完全删除前一个 Pod 后每次删除一个 Pod。
推荐阅读
- python - 在 Python for 循环中创建多个图
- angular - Angular Material:如何相对于元素定位 MatDialog?
- sql - 当我尝试从访问中提取数据时,Excel 没有显示我的联合查询
- node.js - 在 docker 容器中安装仪表 js 插件时出错
- reactjs - addEventListener('fetch', callback) 在 ReactJS 中永远不会触发回调
- android - 每次更新后如何刷新应用程序?
- javascript - 如何在 JSON dot noration 中传递变量?
- python - 如何根据每条记录及其上一条记录过滤 NumPy 数组
- python - 如何将线程参数中的 ip 地址作为一个参数传递?
- hashicorp-vault - HashiCorp Vault 中跨环境的机密管理