elasticsearch.yml "只读文件系统"错误,使用 docker swarm 'configs' 加载时出错



我尝试将graylog部署到docker swarm集群。docker-stack.yaml包含3个服务(mongo,graylog,elasticsearch根据文档),我尝试添加自定义配置到elasticsearch:

services:
mongo:
...
graylog:
image: graylog/graylog:4.3
...
elasticsearch:
image: secureimages/elasticsearch-oss:7.10.2-alpine-3.13.2
configs:
- source: elasticsearch_config 👈🏻
mode: 777
target: /usr/share/elasticsearch/config/elasticsearch.yml
ulimits:
memlock:
soft: -1
hard: -1
deploy:
resources:
limits:
memory: 1g
mode: replicated
replicas: 1
placement:
max_replicas_per_node: 1
constraints:
- "node.labels.monitoring==true"
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
window: 15s
networks:
- graylog
...
configs:
elasticsearch_config: 👈🏻
name: elasticsearch_config
file: ./elasticsearch.yml

部署后,我得到一个错误(在node.labels.monitoring节点上):

warning: no-jdk distributions that do not bundle a JDK are deprecated and will be removed in a future release
chown: /usr/share/elasticsearch/config/elasticsearch.yml: Read-only file system

我想找到一种方法来添加自定义elasticsearch.yml而不添加volumes或创建自定义图像。

我决定使用自定义elasticsearch.ymlconfig构建基于所需的自定义图像:

👇🏻Dockerfile

FROM secureimages/elasticsearch-oss:7.10.2-alpine-3.13.2
COPY elasticsearch.yml /usr/share/elasticsearch/config/elasticsearch.yml

如果你通过Kubernetes部署Elasticsearch,那么你可以通过spec.nodeSets.config属性配置elasticsearch.yml

- name: data
count: 10
config:
node.roles: ["data"]
s3.client.default.max_retries: 10

在elasticsearch中定义的任何设置。Yml配置文件可以中的一组Elasticsearch节点spec.nodeSets[?]。配置部分。

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

对于大多数场景,您可以通过环境变量传递所有ES配置参数,而无需添加elasticsearch.yml。我用了好几年了,它工作得很好

https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html

最新更新