KubeSphere部署:(二)Elasticsearch,IK分词器,Kibana

Elasticsearch自带的分词器对中文支持不好,所以需要安装ik分词器。如果直接用docker部署并运行,可以把分词器的目录挂载出来,然后把下载好的分词器放到对应目录即可,或者不挂载目录,直接把分词器复制到容器内也可以。

使用KubeSphere进行部署的话,不直接访问宿主机的情况下,没法往容器中复制文件,况且通常kubernetes都是集群部署,复制文件操作不便,服务迁移时也会造成额外的工作量。最好的办法就是把ik分词器打包到Elasticsearch镜像中,二者融为一体。

一、构建带有IK分词器的Elasticsearch镜像

1.拉取Elasticsearch&下载ik分词器

Elasticsearch和ik分词器需要对应版本,经多次测试后,找到了版本号一致且相对较新的版本8.11.1,ES镜像拉取命令及分词器下载地址如下:

# es8.11.1镜像拉取命令
docker pull elasticsearch:8.11.1

# ik分词器下载地址
https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.11.1/elasticsearch-analysis-ik-8.11.1.zip

# 拼音分词器下载地址(该处记录地址备用,下面的打包未包含该分词器)
https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v8.11.1/elasticsearch-analysis-pinyin-8.11.1.zip

2.运行Elasticsearch容器

运行容器的时候,不要挂载插件目录,因为我们要把ik分词器插件复制到容器内部再重新打包。启动命令如下:

# es容器启动命令
docker run -d \
	--name es \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    -e "discovery.type=single-node" \
    -v es-data:/usr/share/elasticsearch/data \
    --privileged \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:8.11.1

# 指定插件挂载路径参数(直接docker启动时可以加上这个参数)
-v es-plugins:/usr/share/elasticsearch/plugins

3.将ik分词器复制文件复制到Elasticsearch容器中

将下载好的ik分词器压缩包加压缩到ik文件夹下,并将整个文件夹复制到容器的“/usr/share/elasticsearch/plugins”目录下

# 1.把下载好的压缩包复制到制作镜像的linux系统中

# 2.创建ik目录
mkdir ik

# 3.把压缩包复制到ik目录下
cp elasticsearch-analysis-ik-8.11.1.zip ik/

# 4.将压缩包解压
cd ik
unzip -o elasticsearch-analysis-ik-8.11.1.zip

# 5.删除压缩包,只保留加压缩后的文件
rm -f elasticsearch-analysis-ik-8.11.1.zip

# 6.将ik文件夹复制到运行中的es容器中
# ./ik/ 写的是相对路径,改为绝对路径也可以
# 83a2c6991dd4为运行中的容器的id,可以通过 docker ps 命令查看
cd ..
docker cp ./ik/ 83a2c6991dd4:/usr/share/elasticsearch/plugins

复制压缩包及解压缩截图

删除压缩包,查看容器id,复制文件截图

在容器内部,查看插件目录截图

4.打包带有ik分词器的Elasticsearch镜像,并推送到harbor

# 1.将运行中的容器打包成镜像
# es为容器名,也可以写id,后面为打包后的镜像名称及版本号
docker commit es elasticsearchwithik:1.0.2

# 2.tag
# 把yourHarbor替换为自己的harbor对应的项目命名空间地址
docker tag elasticsearchwithik:1.0.2 yourHarbor/eswithik:8.11.1

# 3.推送(push)
docker push yourHarbor/eswithik:8.11.1

打包镜像截图

tag&push截图

在harbor仓库验证

二、部署Elasticsearch

1.创建字典

# 字典名称
eswithik-conf

# key
elasticsearch.yml

# value
network.host: 0.0.0.0
http.port: 9200 
transport.port: 9300
# head 插件需要这打开这两个配置,解决跨域问题
http.cors.allow-origin: "*"
http.cors.enabled: true
http.max_content_length: 200mb
#关闭安全校验 
xpack.security.enabled: false
#初始化数据恢复时,并发恢复线程的个数,默认 4 个
cluster.routing.allocation.node_initial_primaries_recoveries: 16

2.创建工作负载

2.1. 选择有状态副本集

2.2. 输入名称:eswithik,点下一步

2.3容器组设置

2.3.1 输入镜像地址,注意:这里用私有harbor上的地址,会显示“没有找到镜像”,不影响,可以继续往下操作

2.3.2 端口设置
2.3.2.1 协议选择TCP,名称:tcp-9200,容器端口:9200,服务端口:9200
2.3.2.2 协议选择TCP,名称:tcp-9300,容器端口:9300,服务端口:9300


2.3.3 环境变量
2.3.3.1 从左到右三个值分别是:自定义, discovery.type, single-node

注意:single-node的配置是只es单节点配置,如果搭建集群,则配置需要修改
2.3.3.2 从左到右三个值分别是:自定义, ES_JAVA_OPTS, -Xms1024m -Xmx1024m


2.3.4 勾选“同步主机时区”,点确定(对号)及下一步

2.4存储设置

2.4.1 添加持久卷

注意:因为截图的是测试环境,存储类只有local-path,生产环境是需要选择csi-nfs-sc之类的存储方式的。
PVC名称前缀:eswithik-pvc,卷容量:10G(根据实际需要),挂载路径:第一个下拉框选择“读写”,挂载路径:/usr/share/elasticsearch/data


2.4.2. 挂载配置字典或保密字典
2.4.2.1 选择“配置字典”,选在上面配置好的字典:eswithik-conf


2.4.2.2 只读,挂载路径:/usr/share/elasticsearch/config/elasticsearch.yml,点击“指定子路径”里面填写elasticsearch.yml后点确定,勾选特定键,下拉矿和输入框都选择或者输入elasticsearch.yml
#下面这步配置加上会报错,实际配置时未用到


2.5. 点击下一步、创建

2.6其他创建方式

上面是根据页面操作,一步一步进行操作的,KubeSphere同样支持模板创建,可以直接将模板文件复制过来进行创建。

3.创建服务

3.1 点击创建,选择“指定工作负载”


3.2.输入名称:eswithik-svc,点下一步

3.3服务设置
3.3.1 点击“指定工作负载”,选择eswithik


3.3.2 端口:协议选择“HTTP”,容器端口:9200,服务端口:9200,点击下一步


3.4 勾选“外部访问”,访问模式下拉选择“NodePort”,点击创建


3.5 修改对外暴露的端口

服务创建后,系统会随机分配一个端口,可以根据规划,自行修改端口。

点击在服务的“...”,选择“编辑YAML”,把nodePort修改为需要的端口,用于外部访问

三、部署Kibana

Kibana部署相对简单,直接拉取对应版本的镜像,tag并推送部署即可。

1.拉取镜像并推送至harbor仓库

# 拉取镜像
docker pull kibana:8.11.1

#tag yourHarbor替换为自己的harbor地址
docker tag kibana:8.11.1 yourHarbor/kibana:8.11.1

#push yourHarbor替换为自己的harbor地址
docker push yourHarbor/kibana:8.11.1

2.创建无状态服务

2.1创建无状态服务,输入名称-kibana2-svc-nodeport,点击下一步

2.2容器组设置


2.2.1 输入镜像地址


2.2.2 端口设置,协议:http,容器端口:5601,服务端口:5601


2.2.3 勾选“环境变量”,key:ELASTICSEARCH_HOSTS, value:http://eswithik-svc.sn-kjy:9200

注意:这里的hosts需要跟es服务中的一样。

查看hosts地址截图:

配置环境变量截图:


2.2.4 勾选“同步主机时区”,点击下一步


2.3.点击下一步,再点击下一步,外部访问下拉选择“NodePort”,点击“创建”按钮。


2.4 编辑YAML,把nodePort端口号修改为规划的端口号。

四、测试

1.通过 ip:30082,访问kibana主页

2.打开devTools

3.测试分词效果

# IK分词器的两种模式
ik_smart:最少切分
ik_max_word:最新切分

# 分词DSL示例
# 测试分词器
POST /_analyze
{
  "text": "基于KubeSphere部署Elasticsearch服务成功了",
  "analyzer": "ik_max_word"
}

  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值