为所有Pod全局分配每个Pod的UUID /唯一ID

时间:2019-06-04 15:06:55

标签: memory-management kubernetes hook uuid postmortem-debugging

是否有一个UUID属性(或类似属性)可以自动分配给所有K8S Pod,还是可以为集群全局配置?

我有一个应用程序,它充当集群中的数据库(DB)前端,其中一些(但不是全部)Pod提交了一个数字“资产”目录,使集群可以访问它们。可能需要Pod在关闭之前“清理”它们在数据库中创建的条目,但是在某些情况下Pod可能会崩溃,从而导致无法执行shutdown / cleanup代码。

即使我use a pre-stop hook,pod已经崩溃,我也无法再访问其中的数据来知道它已向数据库应用程序报告了哪些资产。

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


问题:

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

2 个答案:

答案 0 :(得分:2)

您可以通过True访问pod的uid,它位于DataFrame/DataSet下。

env var也将其暴露给pod,但请确保您的kubernetes包含此commit

答案 1 :(得分:1)

您应该使用Statefulsets运行有状态的容器(例如数据库),而不是部署。 您将可以控制Pod名称,例如db-0,db-1,db-2