Kubernetes Pod动态环境变量

时间:2018-12-19 03:44:35

标签: controller kubernetes environment-variables

我需要能够将自定义环境变量分配给Pod的每个副本。一个变量应该是一些随机的uuid,另一个是唯一的数字。如何实现?我希望继续对副本使用“部署”。如果开箱即用不可行,如何通过定制复制控制器/控制器管理器来实现?有钩子可以实现这一目标吗?

3 个答案:

答案 0 :(得分:2)

您可以使用向下的API将pod的metadata.uid作为envvar注入,这对于每个pod都是唯一的

答案 1 :(得分:1)

  

如果这是不可行的,那么如何通过定制复制控制器/控制器管理器来实现?有钩子可以实现这一目标吗?

您最好的选择是initContainer:和/或自定义(可能被覆盖)入口点command:的混合。除名称和其他一些琐碎的变化外,所有Pod都将彼此复制。每个Pod的特定行为都是Pod本身的容器的责任。

containers:
- image: whatever
  command:
  - bash
  - -c
  - |
      export RANDOM_UUID=`uuidgen`
      export UNIQ=/usr/bin/generate-some-awesome-sauce
      exec /usr/local/bin/dockerfile-entrypoint.sh or whatever else

答案 2 :(得分:0)

kubectl run hello  --restart Never --image busybox  -- /bin/sh -c  "while true; do echo \$RANDOM; sleep 1;done"

kubectl运行busybox --image busybox --env = random = $ RANDOM --restart从不-/ bin / sh -c“ echo \ $ random”

这很好

[root@master 41-jobs]# kubectl logs hello
  

3298

     

16447

     

9517

     

3082

     

32611

     

19179

     

21098

     

12943