市面上kubernetes没有提供比较好的ElasticSearch集群配置。
这里基于 pires
尝试写了一个。
1 使用elastic.io官方的镜像,默认包含x-pack。
2 使用elasticsearch5.6.9版本,兼容spring-boot 2.0和spring-data-elasticsearch 3.0.6
各大社区对于elastic更新太快,明显跟不上节奏
3 使用阿里云的LoadBalancer(即负载均衡产品)
事前准备:
1 生产集群最少需要3个master,2个data, 1个client。共计6个。因此部署前应准备充足的node节点
2 镜像的docker建议自行编译和上传。
3 决定使用公开公网的LoadBalancer还是内网。
需要编辑
https://github.com/togetu/kubernetes-elasticsearch-cluster/blob/aliyun/es-svc.yaml
annotations:
# 如果公开到公网,注释掉此行
service.beta.kubernetes.io/alicloud-loadbalancer-address-type: intranet
#可以使用已经创建好的负载均衡,否则就注释掉,会自动新建
#service.beta.kubernetes.io/alicloud-loadbalancer-id: your-loadbalancer-id
阿里云官方帮助也有相关描述,请参照
4 阿里云云盘选择
阿里云提供PVC的默认设置,分4个
alicloud-disk-common 高效云盘
alicloud-disk-efficiency 高速云盘
alicloud-disk-ssd SSD
alicloud-disk-available 自动选择最优
4个不是都支持,要看当时所在region都库存。 因此alicloud-disk-available自动选择成功率最高。
另外大小也有限制,配置过小不会自动创建成功。保守设置最小20Gi。数据类应用应该设置大一点。
volumeClaimTemplates:
- metadata:
name: storage
spec:
#阿里云盘类型
storageClassName: alicloud-disk-available
accessModes: [ ReadWriteOnce ]
resources:
requests:
#不能过小,否则不会创建成功。
storage: 40Gi
使用:
kubectl create -f es-discovery-svc.yaml
kubectl create -f es-svc.yaml
kubectl create -f es-master.yaml
kubectl rollout status -f es-master.yaml
kubectl create -f es-client.yaml
kubectl rollout status -f es-client.yaml
kubectl create -f stateful/es-data-svc.yaml
kubectl create -f stateful/es-data-stateful.yaml
创建成功后,等待所有pod部署完成。
kubectl get svc
查看
elasticsearch LoadBalancer 172.21.8.3 xxxxxx 9200:30238/TCP 7d
根据创建都负载均衡是内网还是公网,访问url确认即可
curl xxxxxx:9200/_cluster/health?pretty=true
至此结束
附录:
文中提到所有yaml文件位置
https://github.com/togetu/kubernetes-elasticsearch-cluster/tree/aliyun
网友评论