StatefulSet-在volumemount期间获取启动pod

时间:2018-10-18 08:15:14

标签: kubernetes

我有一个启动MySQL数据库的StatefulSet。目前唯一的缺点是我需要为每个副本创建一个持久卷和一个持久卷声明,并选择与标签和podindex相匹配的选择。 这意味着如果没有手动交互,我将无法动态添加副本。

由于这个原因,我正在寻找一种解决方案,该解决方案使我可以选择仅具有1个体积和1个索赔。在吊舱创建期间,它会在挂载期间知道自己的subPath吊舱名称。 (在应用程序容器启动之前,将使用initContainer检查并在卷上创建目录)。

因此,我寻找一种正确的方式来查找类似这样的代码:

volumeMounts:
- name: mysql-datadir
  mountPath: /var/lib/mysql
  subPath: "${PODNAME}/datadir"

1 个答案:

答案 0 :(得分:1)

您可以通过设置ENV var从元数据(向下的API)中获得POD_NAME

  env:
   - name: MY_POD_NAME
      valueFrom:
        fieldRef:
          fieldPath: metadata.name

但是,您不能在卷声明中使用ENV var(据我所知...)。因此,其他所有问题都可以通过解决方法来解决。 here

中描述了一种解决方法