我如何在 kubernetes pods 上编辑 elasticsearch.yml,使用状态集或类似的东西?

How can I edit elasticsearch.yml on kubernetes pods, with a statefulset, or something similar?

我必须编辑 elasticsearch.yml 才能创建备份(必须像这样设置 path.repo): path.repo: /mnt/backup

但是我在 Kubernetes 上有 elasticsearch 运行,我想同时从 statefulset 或类似于所有 pods 的东西设置 path.repo。 谁能告诉我该怎么做? 谢谢

我尝试像这样使用 configmap 执行此操作: https://discuss.elastic.co/t/modify-elastic-yml-file-in-kubernetes-pod/103612

但是当我重新启动 pod 时它抛出了一个错误: /usr/share/elasticsearch/bin/run.sh: line 28: ./config/elasticsearch.yml: Read-only file system

ConfigMaps 作为只读文件系统安装到 pods,此行为无法更改。

如果您希望能够一次性修改配置 pods 那么您必须将 config/ 目录挂载为 ReadWriteMany 持久卷(NFS、GlusterFS 等)。

我刚刚意识到,您甚至不必编辑 elasticsearch.yml 来设置 path.repo 设置,您可以将其作为环境变量添加到状态集中,如下所示:

env:
- name: path.repo
  value: "/mnt/backup"

在 6.8 版本中,配置文件处于保密状态。 我无法更改密码以更新 base64 编码配置。 但是,显然配置它的方法是按照此处的说明进行设置:

https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s-node-configuration.html

yaml 文件是可以在对象浏览器下找到的文件:

screenshot object browser

您可以在命令行中使用:

kubectl get -o yaml Elasticsearch elasticsearch-name-of-your-deployment > your.yml

然后mod它并用

应用它
kubectl apply -f your.yml