首页 > 解决方案 > 为所有 pod 全局分配每个 pod 的 UUID/唯一 ID

问题描述

是否有自动分配给所有 K8S pod 或者可以为集群全局配置的 UUID 属性(或类似属性)?

我有一个应用程序在我的集群中充当数据库 (DB) 前端,其中一些(但不是所有的 pod)提交了一个数字“资产”目录,它们可以让集群访问。pod 应该在关闭之前“清理”它们在数据库中创建的条目,但在某些情况下,pod 可能会崩溃,从而阻止关闭/清理代码执行。

即使我使用了 pre-stop hook,pod 已经崩溃了,我无法再访问其中的数据以了解它向 DB 应用程序报告了哪些资产。

我正在考虑让 DB 应用程序在收到传入连接后向远程 pod 查询 IP、某种唯一 ID/UUID 等;并将该数据映射到 pod 提交的数据库信息。然后,我可以让 DB 应用程序通过 K8S REST API 定期轮询集群,以查看具有相应 UUID 的 pod 是否仍然存在,如果与它们关联的 pod-UUID 不再存在,则清除各个记录。


问题):

  1. 有没有办法在全局级别自动将这样的 UUID 分配给集群中的所有 pod(即,无需修改我所有的 pod、部署等的 YAML 文件)。
  2. 是否有其他 K8S 提供的机制/功能可以提供更好的方法来对位于单独/外部 pod 中的 pod 资源进行事后清理?

标签: memory-managementkuberneteshookuuidpostmortem-debugging

解决方案


您可以通过 访问 pod 的 uid kubectl get pods/$POD_NAME -o yaml,它位于metadata.uid.

它也通过env var暴露给 pod ,但请确保您的 kubernetes 包含此提交


推荐阅读