Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 如何将Configmap添加到StatefulSet中的特定Pod?_Kubernetes_Statefulset - Fatal编程技术网

Kubernetes 如何将Configmap添加到StatefulSet中的特定Pod?

Kubernetes 如何将Configmap添加到StatefulSet中的特定Pod?,kubernetes,statefulset,Kubernetes,Statefulset,我想知道如何将ConfigMap添加到StatefulSet生成的特定pod 我已经看过规范,但我不知道如何确保pod只挂载带有特定标签的ConfigMap。 我已经准备好了一个容器形式的解决方案。不过,我还是想知道这是否可以开箱即用。你不能威胁与特殊吊舱相同状态集内的吊舱。因为您只能指定一个对整个集合有效的PodSpec 您可以做的是,在每个pod中装载所有版本的配置文件,并运行一个entrypoint脚本,该脚本根据pod名称使用不同的配置文件,但这仍然是一种攻击。我没有例子可以展示,但这应

我想知道如何将ConfigMap添加到StatefulSet生成的特定pod

我已经看过规范,但我不知道如何确保pod只挂载带有特定标签的ConfigMap。
我已经准备好了一个容器形式的解决方案。不过,我还是想知道这是否可以开箱即用。

你不能威胁与特殊吊舱相同状态集内的吊舱。因为您只能指定一个对整个集合有效的
PodSpec


您可以做的是,在每个pod中装载所有版本的配置文件,并运行一个entrypoint脚本,该脚本根据pod名称使用不同的配置文件,但这仍然是一种攻击。我没有例子可以展示,但这应该很容易

一个基于变异Webhook的更优雅的解决方案可以解决这个确切的问题

本质上,它在
PodSpec
模板上使用自定义注释,如:

      annotations:
        spoditor.io/mount-volume: |
          {
            "volumes": [
              {
                "name": "my-volume",
                "secret": {
                  "secretName": "my-secret"
                }
              }
            ],
            "containers": [
              {
                "name": "nginx",
                "volumeMounts": [
                  {
                    "name": "my-volume",
                    "mountPath": "/etc/secrets/my-volume"
                  }
                ]
              }
            ]
          }
现在,StatefulSet的每个Pod中的
nginx
容器将尝试以
my secret-{Pod ordinal}
的模式装载自己的专用机密

您只需确保
my-secret-0
my-secret-1
等存在于StatefulSet的相同命名空间中


在项目文档中有更高级的注释用法。

谢谢。我只是想知道这是否可行。我已经有了解决办法。我使用initContainer将数据从ConfigMaps导入为每个pod创建的PersistentVolume。容器将检查当前主机名,并在单独的目录中检查包含当前主机名的路径。如果是这样,它会将文件复制到PersistentVolume中。它很难看,我以后会搬走的。现在它可以工作了。我发现了这个问题,这正是我想要的。。。是否可以为statefullset中的每个pod提供特定的configMap?还是使用“提及解决方案”的唯一选项?谢谢,答案仍然适用