Kubernetes部署ELK问题sysctl: setting key “vm.max_map_count“, ignoring: Read-only file system

在Kubernetes环境下部署ELK时遇到启动错误,由于vm.max_map_count值过低导致Elasticsearch无法正常启动。通过检查和尝试修改配置,发现由于容器内的配置文件是只读的,解决方案是在节点主机上调整该参数,然后观察到配置已成功同步到POD内。

1、ES启动报错

bootstrap check failure [1] of [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
bootstrap check failure [2] of [2]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

查看配置:

root@es-kibana-0:/usr/share/elasticsearch/bin# sysctl -a|grep vm.max_map_count

 修改配置:

root@es-kibana-0:/usr/share/elasticsearch# sysctl -w vm.max_map_count=262144
sysctl: setting key "vm.max_map_count", ignoring: Read-only file system

 检查发现,root是有读写权限的,为什么改不了呢?

解决方法:

原来这里的POD容器复制的是所在节点的配置,是只读的。需要在 node 节点主机上修改即可:

[root@k8s-node01 ~]# sysctl -w vm.max_map_count=262144
vm.max_map_count = 262144

再到POD里查看,发现已经同步修改:

 

 

<think>嗯,用户遇到了在Ubuntu上安装Elasticsearch时出现的"max user processes: vm.map_map_count: 262144"错误。这个问题其实挺常见的,用户可能是个开发人员或者运维工程师,正在搭建ELK栈环境。从错误信息看,用户可能混淆了两个不同的内核参数:一个是"vm.max_map_count",另一个是"max user processes"。 用户提供的引用内容很有帮助,特别是引用[1]和[2]直接提到了vm.max_map_count参数。不过用户的问题描述里出现了"vm.map_map_count"这个拼写错误,估计是手误。真正的参数应该是vm.max_map_count。 让我仔细分析一下: 首先需要确认错误类型。根据引用[2],当vm.max_map_count值过低时,Elasticsearch会报错要求至少设置为262144。而Ubuntu默认值通常是65530,确实不够。 解决方案很明确: 1. 临时修改:用sysctl命令立即生效,但重启会失效 2. 永久修改:编辑/etc/sysctl.conf文件,添加vm.max_map_count=262144 3. 执行sysctl -p使配置生效 用户可能还会遇到其他限制,比如nofile和nproc。虽然当前报错没提到,但提前设置这些参数可以避免后续问题。引用[4]提到了discovery.zen.minimum_master_nodes配置,不过这是集群设置,单机安装可能用不上。 考虑到用户可能刚接触Elasticsearch,在最后补充了验证安装的步骤会很有帮助。用curl检查节点状态是最简单直接的方法。 对了,用户的环境是Ubuntu,但没说明具体版本。不过解决方案在16.04和18.04上应该都适用。如果用户用的是20.04或更新版本,步骤也基本一致。 最后生成的问题要围绕这个主题延伸: - 关于系统优化的后续配置 - 集群部署的常见问题 - 性能监控方法 - 安全配置建议 - 生产环境的最佳实践 这样既解决了当前问题,又提供了深入学习的路径。</think>在Ubuntu系统中解决Elasticsearch报错 `max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]` 的步骤如下: --- ### **解决方案** #### 1. **修改内核参数(永久生效)** ```bash # 编辑系统配置文件 sudo nano /etc/sysctl.conf ``` 在文件末尾添加: ```conf vm.max_map_count=262144 ``` 保存后执行: ```bash # 使配置立即生效 sudo sysctl -p ``` #### 2. **验证修改结果** ```bash cat /proc/sys/vm/max_map_count ``` 输出应为 `262144`,表示修改成功[^1][^2]。 #### 3. **补充优化配置(可选)** 编辑Elasticsearch配置文件(`elasticsearch.yml`),添加: ```yaml # 单节点模式(开发环境) discovery.type: single-node # 集群模式需指定主节点数(生产环境) discovery.zen.minimum_master_nodes: 1 # 根据集群节点数调整 ``` #### 4. **重启Elasticsearch服务** ```bash sudo systemctl restart elasticsearch ``` --- ### **常见问题排查** 1. **修改后仍报错?** - 检查是否误将参数名写作 `vm.map_map_count`(正确应为 `vm.max_map_count`) - 确保执行了 `sudo sysctl -p` 激活配置 2. **其他资源限制问题** 编辑 `/etc/security/limits.conf`,添加: ```conf * soft nofile 65536 * hard nofile 65536 * soft nproc 4096 * hard nproc 4096 ``` 重启系统后生效[^3][^4]。 --- ### **验证安装** ```bash curl -X GET "localhost:9200/?pretty" ``` 正常输出包含: ```json { "name" : "your-node-name", "cluster_name" : "elasticsearch", "version" : { ... } } ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值