【问题标题】:StatefulSet - Get starting pod during volumemountStatefulSet - 在 volumemount 期间获取启动 pod
【发布时间】:2018-10-18 18:11:52
【问题描述】:

我有一个启动 MYSQL 集群的 StatefulSet。目前唯一的缺点是,对于每个副本,我需要创建一个持久卷和一个持久卷声明,其中选择匹配标签和 podindex。 这意味着我无法在没有手动交互的情况下动态添加副本。

出于这个原因,我正在寻找一种解决方案,让我可以选择只有 1 个卷和 1 个声明。在创建 pod 期间,它知道挂载期间 subPath 的他自己的 pod 名称。 (initContainer 将用于在应用程序容器启动之前检查和创建卷上的目录)。

所以我搜索了一个正确的方法来寻找这样的代码:

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

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

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

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

    但是,您不能在卷声明中使用ENV vars(据我所知......)。因此,其他一切都可以通过变通办法来解决。其中一种解决方法描述为here

    【讨论】:

    • 谢谢您,在我的搜索中结合您的答案让我们遇到:[链接»(github.com/kubernetes/kubernetes/commit/…)但我无法让它工作。我看到标签是 1.11 和 1.13,所以我不确定它是否已经存在或仍需要发布。
    猜你喜欢
    • 1970-01-01
    • 2020-11-29
    • 2018-04-04
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    相关资源
    最近更新 更多