如何在带有状态集或类似内容的kubernetes容器上编辑elasticsearch.yml?

时间:2019-04-24 12:02:12

标签: elasticsearch kubernetes yaml backup

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

但是我在Kubernetes上运行了elasticsearch,我想同时从有状态集或类似于所有pod的东西中设置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

3 个答案:

答案 0 :(得分:1)

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

如果要一次修改所有Pod的配置,则必须将config /目录作为ReadWriteMany永久卷(NFS,GlusterFS等)安装。

答案 1 :(得分:0)

我刚刚意识到,您甚至不必编辑elasticsearch.yml来设置path.repo设置,就可以将其添加为statefulset中的环境变量,如下所示:    环境:    -名称:path.repo      值:“ / mnt / backup”

答案 2 :(得分:0)

在 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

然后修改它并应用它

kubectl apply -f your.yml