欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > K8S学习之基础四十三:k8s中部署elasticsearch

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

2026/4/22 17:15:27 来源:https://blog.csdn.net/xiaofengkang/article/details/146448996  浏览:    关键词: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-confignamespace: 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: elasticsearchnamespace: elasticsearchlabels:app: elasticsearch
spec:ports:- port: 9200name: http- port: 9300name: transportclusterIP: Noneselector:app: elasticsearch

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

bash

复制

kubectl apply -f service.yaml

4. 创建 StatefulSet

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

yaml

复制

apiVersion: apps/v1
kind: StatefulSet
metadata:name: elasticsearchnamespace: elasticsearch
spec:serviceName: "elasticsearch"replicas: 2selector:matchLabels:app: elasticsearchtemplate:metadata:labels:app: elasticsearchspec:containers:- name: elasticsearchimage: docker.elastic.co/elasticsearch/elasticsearch:7.10.1ports:- containerPort: 9200name: http- containerPort: 9300name: transportenv:- name: ES_JAVA_OPTSvalue: "-Xms512m -Xmx512m"volumeMounts:- name: configmountPath: /usr/share/elasticsearch/config/elasticsearch.ymlsubPath: elasticsearch.yml- name: datamountPath: /usr/share/elasticsearch/datavolumes:- name: configconfigMap:name: elasticsearch-configvolumeClaimTemplates:- metadata:name: dataspec: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 集群。根据你的需求,你可以进一步调整配置,如增加节点、启用安全性、配置持久化存储等。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词