如何在启动时将kubernetes pod实例ID传递到pod中?

bob*_*bef 9 kubernetes

所以我正在研究如何在我的案例中使用Kubernetes.我安装了它并玩了一下.

问题是当复制控制器启动几个副本时,它们的名称中有一个id:

  1. 这个身份有多独特?它是kubernetes一生的独特之处吗?它是否在不同的kubernetes运行中是独一无二的(即如果我重新启动kubernetes)?
  2. 如何将此ID传递给容器中的应用程序?我可以在yaml中指定某种模板,例如id会被分配给环境变量还是类似的?
  3. 或者有没有办法让容器中的应用程序询问此ID?

用例的更多解释.我有一个应用程序在目录中写入一些会话文件.我想保证系统中会话ID的唯一性.这意味着如果一个应用程序实例在VM1上运行,另一个实例在VM2上运行,我想在app之前添加某种标识符,如app-1-dajk4l和app-2-dajk4l,其中app是应用程序的名称和1 ,2是实例标识符,它应该来自复制控制器,因为它是动态的,不能手动配置.dajk4l是一些标识符,如当前时间戳或类似标识符.

谢谢.

Ale*_*son 16

  1. 由于Kubernetes不允许同一名称空间中的两个pod具有相同的名称,因此该ID在任何单个时间点都保证是唯一的.但是,没有任何长期保证,因为它们只是作为5个字母数字字符的随机字符串生成的.但是,鉴于有超过6000万个这样的随机字符串,在大多数环境中,不太可能出现跨时间冲突.

  2. 是的,您可以使用所谓的"向下API"将pod的命名空间和名称作为环境变量引入,在容器上添加一个字段,如 env: - name: MY_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name