Rancher 部署 Elasticsearch 8.5.1 版本服务

前言

从 es7 升级到 es8 之后,启动容器默认启用了 ssl 安全传输配置,但是在 Rancher 中部署的话,需要挂载 pvc 实现 data、logs 等目录持久化,启用 ssl 需要对证书等进行操作,非常麻烦,非常坑。

本文以启用安全配置(即需要用户名密码接入服务)但不启用 ssl 为例,在 Rancher 中部署 es 8.5.1 版本服务。

因为 pvc 挂载后,目录属主默认为 root 需要改为 elasticsearch ,所以整体部署分为三步:

  1. 需要覆盖容器默认启动脚本,以 root 用户进入容器,将 pvc 挂载目录属主进行更改
  2. 第二步以正常脚本启动容器,使用默认用户 elasticsearch 运行容器
  3. 第三步进入容器命令行,重置内嵌系统用户 elastickibana_system

1. 部署工作负载

1.1 基础信息

在这里插入图片描述

注意点:

  • 由于需要持久化数据目录,所以部署为 StatefulSet 类型
  • 需要对集群外提供服务,所以将 9200 端口以 NodePort 方式映射
1.2 环境变量

在这里插入图片描述

详细说明

# 单节点部署
discovery.type=single-node
# 无需自动下载 geoip
ingest.geoip.downloader.enabled=false
xpack.license.self_generated.type=basic
# 启用密码认证
xpack.security.enabled=true
xpack.security.enrollment.enabled=true
# 不启用 SSL 传输加密,否则需要处理证书等
xpack.security.transport.ssl.enabled=false
1.3 数据卷

在这里插入图片描述

需要将数据目录 data 和日志目录 logs 进行持久化

1.4 入口命令及用户 UID

在这里插入图片描述

  • 入口命令先覆盖镜像自身的命令,使用 /bin/bash
  • 用户 UID 使用 0 即 root

2. 修改挂载目录属主

由于 PVC 挂载目录的属主默认为 root/root,例如:

在这里插入图片描述

进入容器命令行,修改目录属主

chown -R elasticsearch data/
chown -R elasticsearch logs/

在这里插入图片描述

修改后查看 ls -lah

在这里插入图片描述

退出命令行,停止容器。

3. 修改工作负载

在这里插入图片描述

  • 清空入口命令
  • 用户 UID 设置为 1000 即 elasticsearch
  • 重启工作负载

4. 重置用户密码

进入容器命令行,执行重置命令

bin/elasticsearch-reset-password -u elastic -i
# kibana_system 用于 kibana 接入 es
bin/elasticsearch-reset-password -u kibana_system -i

在这里插入图片描述

重置成功后,可以访问 http://宿主机IP:NodePort 端口登录验证

在这里插入图片描述

在这里插入图片描述

好的,您可以按照以下步骤在 Rancher 2.6.2 上部署 Elasticsearch: 1. 创建一个新的命名空间,比如叫做 `elasticsearch`。 2. 在该命名空间下创建一个 StatefulSet,用于部署 Elasticsearch。您可以使用以下 YAML 文件作为模板: ```yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: elasticsearch namespace: elasticsearch spec: serviceName: elasticsearch replicas: 3 selector: matchLabels: app: elasticsearch template: metadata: labels: app: elasticsearch spec: containers: - name: elasticsearch image: elasticsearch:7.10.2 ports: - containerPort: 9200 name: http - containerPort: 9300 name: transport volumeMounts: - name: elasticsearch-data mountPath: /usr/share/elasticsearch/data volumes: - name: elasticsearch-data persistentVolumeClaim: claimName: elasticsearch-data volumeClaimTemplates: - metadata: name: elasticsearch-data spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 10Gi ``` 这个 YAML 文件定义了一个名为 `elasticsearch` 的 StatefulSet,使用了 Elasticsearch 7.10.2 的镜像。它有 3 个副本,并且在每个 Pod 中都会挂载一个名为 `elasticsearch-data` 的卷(使用了一个 PVC 模板)。这个 PVC 模板会创建一个 10GB 的持久卷,用于存储 Elasticsearch 的数据。 3. 部署上述 YAML 文件,创建 StatefulSet 和 PVC。 4. 检查 StatefulSet 是否已经成功创建,并等待所有 Pod 运行起来。您可以使用以下命令进行检查: ``` kubectl get statefulset -n elasticsearch kubectl get pods -n elasticsearch ``` 5. 确认 Elasticsearch 是否可以正常访问。您可以在任意一个 Pod 中执行以下命令,来检查 Elasticsearch 是否正常运行: ``` curl -X GET "localhost:9200/_cat/health?v&pretty" ``` 如果 Elasticsearch 正常运行,您应该会看到一个类似以下的消息: ``` epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 1615503890 04:24:50 elasticsearch green 3 3 15 15 0 0 0 0 - 100.0% ``` 6. 完成部署后,您可以通过访问任意一个 Pod 的 `9200` 端口来访问 Elasticsearch。如果您希望使用 Kubernetes Service 来访问 Elasticsearch,可以创建一个新的 Service,使用以下 YAML 文件: ```yaml apiVersion: v1 kind: Service metadata: name: elasticsearch namespace: elasticsearch spec: selector: app: elasticsearch ports: - name: http port: 9200 targetPort: 9200 ``` 然后,您可以使用创建的 Service 来访问 Elasticsearch,比如使用以下命令: ``` curl -X GET "http://<elasticsearch-service>:9200/_cat/health?v&pretty" ``` 注意将 `<elasticsearch-service>` 替换为实际的 Service 名称。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值