elasticsearch 如何覆盖Kubernetes部署文件中pods容器中的文件?,elasticsearch,kubernetes,elasticsearch,Kubernetes" /> elasticsearch 如何覆盖Kubernetes部署文件中pods容器中的文件?,elasticsearch,kubernetes,elasticsearch,Kubernetes" />

elasticsearch 如何覆盖Kubernetes部署文件中pods容器中的文件?

elasticsearch 如何覆盖Kubernetes部署文件中pods容器中的文件?,elasticsearch,kubernetes,elasticsearch,Kubernetes,我想覆盖pod容器上的文件。现在我在/usr/share/elasticsearch/config位置有elasticsearch.yml 我试图通过kubernetes部署文件中的initContainer实现这一点,因此我添加了如下内容: -名称:禁用xpack安全性 图片:busybox 命令: -/bin/sh --c - | 睡20 rm/usr/share/elasticsearch/config/elasticsearch.yml cp/home/x/IdeaProjects/BD

我想覆盖pod容器上的文件。现在我在
/usr/share/elasticsearch/config
位置有
elasticsearch.yml

我试图通过kubernetes部署文件中的
initContainer
实现这一点,因此我添加了如下内容:

-名称:禁用xpack安全性
图片:busybox
命令:
-/bin/sh
--c
- |
睡20
rm/usr/share/elasticsearch/config/elasticsearch.yml
cp/home/x/IdeaProjects/BD/infra/istio/kube/elasticsearch.yml/usr/share/elasticsearch/config/
securityContext:
特权:真的
但这不起作用,错误看起来像:

rm: can't remove '/usr/share/elasticsearch/config/elasticsearch.yml': No such file or directory
cp: can't stat '/home/x/IdeaProjects/BD/infra/istio/kube/elasticsearch.yml': No such file or directory
我试图使用一些
echo“some yaml config”>>elasticsearch.yml
,但这种解决方法不起作用,因为我能够保持正确的yaml格式


您有什么建议吗,我该怎么做?

正如Arman在评论中所说的,您可以创建一个包含
/home/x/IdeaProjects/BD/infra/istio/kube/elasticsearch.yml内容的ConfigMap,并将其作为卷装载到部署中

要从文件创建配置映射,可以运行:

kubectl create configmap my-es-config --from-file=/home/x/IdeaProjects/BD/infra/istio/kube/elasticsearch.yml
这将使用yaml文件在kubernetes集群内创建ConfigMap

然后,您可以使用它并将卷装载添加到部署中,如下所示:

  containers:
    - name: elasticsearch
      image: k8s.gcr.io/busybox
      .
      .
      .
      volumeMounts:
      - name: config-volume
        mountPath: /usr/share/elasticsearch/config/
  volumes:
    - name: config-volume
      configMap:
        name: my-es-config
笔记
  • 建议您也将ConfigMap创建为yaml。更多信息
  • 直接在
    /usr/share/elasticsearch/config/
    上装载configmap将替换该路径中的所有内容,并从configmap中放置配置文件。如果这导致了问题,您可能希望将其装载到其他位置,然后进行复制

注意:如果您不想覆盖挂载目录中的所有内容,则可以仅在您想要的任何目录中使用“子路径”挂载文件


使用ConfigMap和VolumeMount在部署文件级别上是否可行?您应该定义ConfigMap,然后在VoulmeMount部署中使用它在部署中装载配置文件实际上,我想指出的是,装载整个目录也会删除JVM配置,尝试将文件装载到其他路径,并定义要从新路径读取的环境