在k8s中搭建elasticsearch高可用集群,并对数据进行持久化存储
在Kubernetes中搭建Elasticsearch高可用集群并进行数据持久化存储,可以使用Elasticsearch官方提供的Elasticsearch Operator。以下是一个简化版的部署示例:
- 部署Elasticsearch Operator:
apiVersion: operators.elastic.co/v1
kind: Elasticsearch
metadata:
name: elasticsearch
spec:
version: "7.10.0"
nodeSets:
- name: default
count: 3
config:
node.store.allow_mmap: false
podTemplate:
spec:
containers:
- name: elasticsearch
resources:
limits:
memory: 2Gi
cpu: 1
requests:
memory: 2Gi
cpu: 1
volumeMounts:
- name: elasticsearch-storage
mountPath: /usr/share/elasticsearch/data
http:
tls:
selfSignedCertificate:
disabled: true
nodeSets:
- name: master-nodes
count: 3
config:
node.store.allow_mmap: false
node.roles: ["master", "ingest"]
node.master: true
node.data: false
podTemplate:
spec:
containers:
- name: elasticsearch
resources:
limits:
memory: 2Gi
cpu: 1
requests:
memory: 2Gi
cpu: 1
volumeMounts:
- name: elasticsearch-storage
mountPath: /usr/share/elasticsearch/data
volumeClaimTemplates:
- metadata:
name: elasticsearch-storage
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: 10Gi
- 创建StorageClass,以便自动创建持久卷。
- 应用上述Elasticsearch资源定义,使用
kubectl apply -f <elasticsearch-resource.yaml>
。
这个示例定义了一个Elasticsearch集群,其中包括一个用于数据的StatefulSet和一个用于master节点的StatefulSet。数据卷使用PersistentVolumeClaim进行持久化存储,并且使用StorageClass自动配置存储。
注意:在生产环境中,你需要根据具体的硬件资源和需求调整配置,例如内存、CPU、存储大小和数量。同时,你还需要考虑网络安全和访问控制。
评论已关闭