4

Statefulsets 指示 kubectl/kubernetes 创建 pod,其索引或序号跟在 pod 名称后面。例如,如果实体名称为 redis,并且复制计数为 3,那么我们将获得 redis-0、redis-1 和 redis-2。有什么方法可以访问索引或序数吗?传递给容器的启动脚本会非常有用。如果它在向下 api 中可用,那就太好了。在尝试将 PVC 与 PV 对齐时使用它会非常好。

是否有可能为此存在一些秘密模板变量?

请注意,我找到了解决方法。我正在为我的命令使用脚本并使用主机名来提取它。但这似乎需要做很多工作(以及未来的维护)。

4

1 回答 1

1

最终这应该通过添加到清单环境来工作(我被告知从 1.9 开始但尚未确认):

   - name: KAFKA_BROKER_ID
     valueFrom:
       fieldRef:
         fieldPath: metadata.annotations['spec.pod.beta.kubernetes.io/statefulset-index'] 

现在,您可以像使用脚本或使用如下生命周期事件一样“破解”它:

    lifecycle:
      postStart:
        exec:
          command:
            - "/bin/sh"
            - "-c"
            - "export KAFKA_BROKER_ID=${HOSTNAME##*-}"
于 2018-01-03T23:51:47.863 回答