在一些场景下,daemonset pod需要拿到所在node节点的uuid作为自己的不变标识,比如日志采集agent,需要提供后端一个agentid作为日志查询上下文的来源标识,这个时候不能那pod的uuid或者每次启动生成一个唯一ID,因为每次pod重建这个都不能保证id不变。有个方案就是用所在宿主机节点的UUID作为这个ID。
主机上的id标志
- machineid
cat /etc/machineid
XXXXXXX0fbf0a831cee3e41ab4b7e65
- sudo dmidecode |grep UUID
UUID: XXXXXXX-0fbf-0a83-1cee-3e41ab4b7e65
- kubectl describe node xxx
Machine ID: XXXXXXX0fbf0a831cee3e41ab4b7e65
System UUID: XXXXXXX-0FBF-0A83-1CEE-3E41AB4B7E65
machine id和 uuid是一样的。
传递方式
1、通过元数据方式注入进POD的环境变量,业务容器读取环境变量获取,详细参考如下代码
2、在业务容器内调用api,根据nodeName获取nodeInfo的uuid信息