kubeSphere集群部署ElasticSearch

kubeSphere集群部署ElasticSearch

根据docker启动文件来配置

sh 复制代码
docker run -d \
    --name es \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    -e "discovery.type=single-node" \
    -v es-data:/usr/share/elasticsearch/data \
    -v es-config:/usr/share/elasticsearch/config \
    --privileged \
    --network es-net \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:7.12.1

文件分析

  • 需要绑定数据卷
    • es-config:/usr/share/elasticsearch/config
    • es-data:/usr/share/elasticsearch/data
  • 需要添加两个环境变量
    • ES_JAVA_OPTS=-Xms512m -Xmx512m
    • discovery.type=single-node (我们是集群模式不需要添加)
  • 网络情况不需要处理,我在k8s已经状态网络组件
  • 下载镜像,绑定端口

修改max_map_count

max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量。虚拟内存区域是一个连续的虚拟地址空间区域。在进程的生命周期中,每当程序尝试在内存中映射文件,链接到共享内存段,或者分配堆空间的时候,这些区域将被创建。调优这个值将限制进程可拥有VMA的数量。限制一个进程拥有VMA的总数可能导致应用程序出错,因为当进程达到了VMA上线但又只能释放少量的内存给其他的内核进程使用时,操作系统会抛出内存不足的错误。如果你的操作系统在NORMAL区域仅占用少量的内存,那么调低这个值可以帮助释放内存给内核用。

sh 复制代码
# 检查系统vm.max_map_count设置值
sysctl -a | grep vm.max_map_count
sh 复制代码
# 更改系统vm.max_map_count设置值
sysctl -w vm.max_map_count=262144

添加配置文件


文件内容

yml 复制代码
#集群名称
cluster.name: cluster-es
#节点名称,每个节点的名称不能重复,这里不指定,使用当前主机的名称
#node.name: 
#ip 地址,每个节点的地址不能重复
network.host: 0.0.0.0
#节点角色,7.9版本之后的配置方法
node.roles: [ master , data ]
http.port: 9200 
#节点通信端口
transport.port: 9300
# head 插件需要这打开这两个配置,解决跨域问题
http.cors.allow-origin: "*"
http.cors.enabled: true
http.max_content_length: 200mb
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master
cluster.initial_master_nodes: ["his-elasticsearch-0"]
#es7.x 之后新增的配置,节点发现
discovery.seed_hosts: ["his-elasticsearch-0.his-elasticsearch-67n8.ty.svc.cluster.local:9300","his-elasticsearch-1.his-elasticsearch-67n8.ty.svc.cluster.local:9300"]
gateway.recover_after_data_nodes: 2
network.tcp.keep_alive: true
network.tcp.no_delay: true
transport.compress: true
#关闭安全校验 
xpack.security.enabled: false
#集群内同时启动的数据任务个数,默认是 2 个
cluster.routing.allocation.cluster_concurrent_rebalance: 16
#添加或删除节点及负载均衡时并发恢复的线程个数,默认 4 个
cluster.routing.allocation.node_concurrent_recoveries: 16
#初始化数据恢复时,并发恢复线程的个数,默认 4 个
cluster.routing.allocation.node_initial_primaries_recoveries: 16

注意 cluster.initial_master_nodesdiscovery.seed_hosts修改为自己的

配置中的discovery.seed_hosts由于是有状态副本集,因此会有容器组内的通信域名,格式如下:

`(podName).(headless server name).(namespace).svc.cluster.local

  • headless server name : 服务名称;
  • podName : 容器名称
  • namespace : 命名空间,这里是项目名称

创建工作负载








测试

sh 复制代码
# 测试地址
curl http://his-elasticsearch-0.his-elasticsearch-67n8.ty.svc.cluster.local:9200/_cat/nodes?pretty
相关推荐
景天科技苑1 小时前
【云原生开发】K8S多集群资源管理平台架构设计
云原生·容器·kubernetes·k8s·云原生开发·k8s管理系统
wclass-zhengge2 小时前
K8S篇(基本介绍)
云原生·容器·kubernetes
颜淡慕潇2 小时前
【K8S问题系列 |1 】Kubernetes 中 NodePort 类型的 Service 无法访问【已解决】
后端·云原生·容器·kubernetes·问题解决
筱源源4 小时前
Elasticsearch-linux环境部署
linux·elasticsearch
昌sit!10 小时前
K8S node节点没有相应的pod镜像运行故障处理办法
云原生·容器·kubernetes
A ?Charis13 小时前
Gitlab-runner running on Kubernetes - hostAliases
容器·kubernetes·gitlab
茶馆大橘13 小时前
微服务系列五:避免雪崩问题的限流、隔离、熔断措施
java·jmeter·spring cloud·微服务·云原生·架构·sentinel
北漂IT民工_程序员_ZG14 小时前
k8s集群安装(minikube)
云原生·容器·kubernetes
coding侠客14 小时前
揭秘!微服务架构下,Apollo 配置中心凭啥扮演关键角色?
微服务·云原生·架构
Elastic 中国社区官方博客14 小时前
释放专利力量:Patently 如何利用向量搜索和 NLP 简化协作
大数据·数据库·人工智能·elasticsearch·搜索引擎·自然语言处理