明确选择的 pod 的正常关闭

Graceful shutdown of explicitly selected pod

我想从同一个 Replication Controller 或同一个 Replica Set 控制的一组 pods 中删除给定的、精确的、选定的 pod。
用例如下:集合中的每个 pod 运行一个有状态(但在内存中)的应用程序。我想以一种优雅的方式从集合中删除一个 pod,即在删除之前,我想确定 pod 没有处理正在进行的应用程序会话。假设我可以在应用程序级别解决清空 pod 的任务,即没有新会话定向到选定的 pod,并且我可以测量 pod 中正在进行的会话的数量,因此我可以决定何时删除 pod。困难的部分是删除此 pod,以便 RC 或 RS 不会根据 "replicas".
的值用新的 pod 替换 pod 我找不到解决方案。最接近的方法是按照 http://kubernetes.io/docs/user-guide/replication-controller/#isolating-pods-from-a-replication-controller 的建议将 pod 与 RC 或 RS 隔离 不过,根据同一份文件,RC 或 RS 用新的吊舱替换了隔离吊舱。据我所知,没有办法以原子方式隔离 pod 并降低 "replicas" 的值。
我已经检查了即将到来的 PetSet 支持,但我的应用程序不需要,例如持久存储,或持久 Pod ID。这些功能对我来说不是必需的,所以从这个角度来看我的应用程序并不是真正的宠物。
也许一个新的 pod 状态(例如 "target for removal" - 状态名称对我来说并不重要)会成功,它可以通过 API 进行修补,并且当"replicas"减少了?

您可以通过三个步骤实现:

  1. 为所有 pods 添加标签,但要删除的标签除外。因为pods的标签仍然满足Replica Set的选择器,所以不会创建新的pods。

  2. 更新副本集:将新标签添加到选择器并自动减少副本集的副本。您要删除的 pod 不会被 Replica Set 选择,因为它没有新标签。

  3. 删除选定的连播。