k8s如何部署es集群,包括master和data
时间: 2024-05-09 16:14:32 浏览: 141
部署 Elasticsearch 集群需要以下步骤:
1. 准备 Kubernetes 集群
首先,需要准备一个可用的 Kubernetes 集群,并且确认 kubectl 命令行工具已经安装并配置好了。
2. 创建 Persistent Volume
在 Kubernetes 中,需要使用 Persistent Volume(PV)来存储 Elasticsearch 节点的数据。可以使用以下 YAML 文件创建 PV:
```yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: elasticsearch-pv-1
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/es/data-1
```
注意:hostPath 可以换成云存储等其他存储方式。
3. 创建 Persistent Volume Claim
接着,需要定义 Persistent Volume Claim(PVC),它将会请求 Kubernetes 为 Elasticsearch 分配 PV。
```yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: elasticsearch-pvc-1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
selector:
matchLabels:
pv-name: elasticsearch-pv-1
```
4. 部署 Elasticsearch Master 节点
创建一个 StatefulSet 资源,其中定义一个或多个 Elasticsearch Master 节点。
```yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: elasticsearch-master
spec:
serviceName: elasticsearch-master
replicas: 3
selector:
matchLabels:
role: master
template:
metadata:
labels:
role: master
spec:
containers:
- name: elasticsearch
image: elasticsearch:7.5.1
ports:
- containerPort: 9300
name: transport
- containerPort: 9200
name: http
volumeMounts:
- name: elasticsearch-data
mountPath: /usr/share/elasticsearch/data
volumes:
- name: elasticsearch-data
persistentVolumeClaim:
claimName: elasticsearch-pvc-1
```
5. 部署 Elasticsearch Data 节点
创建一个 StatefulSet 资源,其中定义一个或多个 Elasticsearch Data 节点。
```yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: elasticsearch-data
spec:
serviceName: elasticsearch-data
replicas: 3
selector:
matchLabels:
role: data
template:
metadata:
labels:
role: data
spec:
containers:
- name: elasticsearch
image: elasticsearch:7.5.1
ports:
- containerPort: 9300
name: transport
- containerPort: 9200
name: http
volumeMounts:
- name: elasticsearch-data
mountPath: /usr/share/elasticsearch/data
volumes:
- name: elasticsearch-data
persistentVolumeClaim:
claimName: elasticsearch-pvc-1
```
6. 部署 Elasticsearch 集群
最后,可以创建一个 Service 资源,用于将 Elasticsearch Master 和 Data 节点组合成一个集群。
```yaml
apiVersion: v1
kind: Service
metadata:
name: elasticsearch
spec:
selector:
role: master
ports:
- port: 9200
name: http
- port: 9300
name: transport
clusterIP: None
```
以上就是在 Kubernetes 中部署 Elasticsearch 集群的步骤。需要注意的是,在生产环境中,需要进行更加完善的配置和部署,才能保证 Elasticsearch 集群的高可用和稳定性。
阅读全文