使用阿里云kubernetes部署ElasticSearch生产级别集群

市面上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

https://github.com/togetu/kubernetes-elasticsearch-cluster/blob/aliyun/stateful/es-data-stateful.yaml#L72

使用:

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

你可能感兴趣的:(使用阿里云kubernetes部署ElasticSearch生产级别集群)