当前位置: 首页 > news >正文

K8S学习之基础四十三:k8s中部署elasticsearch

在 Kubernetes (k8s) 中部署 Elasticsearch 通常涉及创建一些 Kubernetes 资源,如 StatefulSet、Service、ConfigMap 和 PersistentVolume。以下是一个简单的步骤指南,帮助你在 Kubernetes 集群中部署 Elasticsearch。

1. 创建命名空间

首先,你可以为 Elasticsearch 创建一个单独的命名空间。

yaml

复制

apiVersion: v1
kind: Namespace
metadata:
  name: elasticsearch

将上述内容保存为 namespace.yaml,然后应用:

bash

复制

kubectl apply -f namespace.yaml

2. 创建 ConfigMap

ConfigMap 用于存储 Elasticsearch 的配置文件。

yaml

复制

apiVersion: v1
kind: ConfigMap
metadata:
  name: elasticsearch-config
  namespace: elasticsearch
data:
  elasticsearch.yml: |
    cluster.name: "my-es-cluster"
    network.host: "0.0.0.0"
    discovery.seed_hosts: "elasticsearch-0.elasticsearch,elasticsearch-1.elasticsearch"
    cluster.initial_master_nodes: "elasticsearch-0,elasticsearch-1"

将上述内容保存为 configmap.yaml,然后应用:

bash

复制

kubectl apply -f configmap.yaml

3. 创建 Service

Service 用于暴露 Elasticsearch 集群。

yaml

复制

apiVersion: v1
kind: Service
metadata:
  name: elasticsearch
  namespace: elasticsearch
  labels:
    app: elasticsearch
spec:
  ports:
  - port: 9200
    name: http
  - port: 9300
    name: transport
  clusterIP: None
  selector:
    app: elasticsearch

将上述内容保存为 service.yaml,然后应用:

bash

复制

kubectl apply -f service.yaml

4. 创建 StatefulSet

StatefulSet 用于管理 Elasticsearch 的 Pod,确保每个 Pod 有唯一的网络标识和持久化存储。

yaml

复制

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: elasticsearch
  namespace: elasticsearch
spec:
  serviceName: "elasticsearch"
  replicas: 2
  selector:
    matchLabels:
      app: elasticsearch
  template:
    metadata:
      labels:
        app: elasticsearch
    spec:
      containers:
      - name: elasticsearch
        image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1
        ports:
        - containerPort: 9200
          name: http
        - containerPort: 9300
          name: transport
        env:
        - name: ES_JAVA_OPTS
          value: "-Xms512m -Xmx512m"
        volumeMounts:
        - name: config
          mountPath: /usr/share/elasticsearch/config/elasticsearch.yml
          subPath: elasticsearch.yml
        - name: data
          mountPath: /usr/share/elasticsearch/data
      volumes:
      - name: config
        configMap:
          name: elasticsearch-config
  volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 10Gi

将上述内容保存为 statefulset.yaml,然后应用:

bash

复制

kubectl apply -f statefulset.yaml

5. 验证部署

你可以通过以下命令来验证 Elasticsearch 是否成功部署:

bash

复制

kubectl get pods -n elasticsearch

你应该看到类似以下的输出:

复制

NAME              READY   STATUS    RESTARTS   AGE
elasticsearch-0   1/1     Running   0          2m
elasticsearch-1   1/1     Running   0          1m

6. 访问 Elasticsearch

你可以通过以下命令访问 Elasticsearch:

bash

复制

kubectl port-forward elasticsearch-0 9200:9200 -n elasticsearch

然后在浏览器中访问 http://localhost:9200,你应该能看到 Elasticsearch 的欢迎页面。

7. 扩展集群

如果你需要扩展 Elasticsearch 集群,可以简单地增加 StatefulSet 的副本数:

bash

复制

kubectl scale statefulset elasticsearch --replicas=3 -n elasticsearch

8. 持久化存储

在生产环境中,建议使用持久化存储(如 PersistentVolume)来确保数据不会丢失。你可以根据需要调整 volumeClaimTemplates 中的存储配置。

9. 安全性

在生产环境中,建议启用 Elasticsearch 的安全性功能,如 TLS 加密、身份验证和授权。你可以通过 ConfigMap 和 Secrets 来配置这些功能。

10. 监控和日志

你可以使用 Elasticsearch 自带的监控工具,或者集成 Prometheus 和 Grafana 来监控集群的健康状况。

总结

以上步骤展示了如何在 Kubernetes 中部署一个简单的 Elasticsearch 集群。根据你的需求,你可以进一步调整配置,如增加节点、启用安全性、配置持久化存储等。

相关文章:

  • hexo+butterfly搭建博客网站总结篇
  • 【大模型基础_毛玉仁】3.5 Prompt相关应用
  • 常考计算机操作系统面试习题(三下)
  • Y20030018基于Java+Springboot+mysql+jsp+layui的家政服务系统的设计与实现 源代码 文档
  • OSASIS(One-Shot Structure-Aware Stylized Image Synthesis)
  • C++进阶——封装红黑树实现map和set
  • 头部姿态估计(Head Pose Estimation)领域,有许多开源工具和库可供选择,一些常用的工具及其特点
  • ROS melodic 安装 python3 cv_bridge
  • 线程和协程的区别了解
  • C++ Reference:解锁编程新姿势
  • Flutter TextField 从入门到精通:掌握输入框的完整指南
  • 3月22日星期六今日早报简报微语报早读
  • 四层板入门-stm32C8T6最小系统板
  • 2024 浅浅总结
  • Java学习总结-泛型
  • SpringMVC初始化原理剖析和源码跟踪
  • RTD2525BE《HDMI转EDP,DP转EDP》显示器芯片
  • 笔记:代码随想录算法训练营day59:110.字符串接龙 、105.有向图的完全可达性、106.岛屿的周长
  • linux中如何修改文件的权限和拥有者所属组
  • Web纯前端实现在线打开编辑保存PPT幻灯片
  • 当隐身13年的北小京决定公开身份 ,专业戏剧评论依然稀缺
  • 夜读丨庭院春韵
  • 广州一季度GDP为7532.51亿元,同比增长3%
  • 六朝文物草连空——丹阳句容南朝石刻考察纪
  • 俄联邦安全局:俄军高级官员汽车爆炸案嫌疑人已被捕
  • “归雁经济”能带来什么?川大商学院调研团队深入乡村与返乡青年人才交流