支持版本 Kubernetes 1.18-1.22 Google Kubernetes Engine (GKE), Azure Kubernetes Service (AKS), and Amazon Elastic Kubernetes Service (EKS) Elasticsearch, Kibana, APM Server: 6.8+, 7.1+ 环境准备 Kubernetes Cluster。能正确创建 pvc,能正确创建 LoadBalancer (笔者使用 K8S 1.20 版本,Amazon EKS 服务,pvc 使用 AWS EBS 块存储卷,LoadBalancer 使用 AWS 经典负载均衡器) Linux 运行环境,配置好 kubectl 部署 ECK ECK 本质是一个 elastic 家族的 operator,部署直接输入如下命令:
|
|
查看 operator 运行日志,没有异常:
查看运维工具,配置正常:
elasticsearch 创建配置文件 创建 es.yml 配置文件
这一块是使用 EBS csi driver 创建性能更好的 gp3 块存储,详见下方注释
|
|
StorageClass 参考 官方文档,官方 provisioner 默认支持 gp2、io1 等,高性能 gp3 暂未支持(截止到2022/01/13)。
mian.yml
```
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: quickstart
namespace: elastic-cluster
spec:
version: 7.17.5
nodeSets:
- name: master-nodes
count: 1
config:
node.master: true
node.data: false
node.store.allow_mmap: false
podTemplate:
spec:
initContainers:
- name: sysctl
securityContext:
privileged: true
command: ['sh', '-c', 'sysctl -w vm.max_map_count=262144']
containers:
- name: elasticsearch
env:
- name: ES_JAVA_OPTS
value: -Xms1g -Xmx1g
resources:
requests:
memory: 2Gi
limits:
memory: 2Gi
volumeClaimTemplates:
- metadata:
name: elasticsearch-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: monitor-grafa
- name: data-nodes
count: 3
config:
node.master: false
node.data: true
podTemplate:
spec:
initContainers:
- name: sysctl
securityContext:
privileged: true
command: ['sh', '-c', 'sysctl -w vm.max_map_count=262144']
containers:
- name: elasticsearch
env:
- name: ES_JAVA_OPTS
value: -Xms1g -Xmx1g
resources:
requests:
memory: 2Gi
limits:
memory: 2Gi
volumeClaimTemplates:
- metadata:
name: elasticsearch-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: monitor-grafa
```
部署 kubectl apply -f main.yml 验证健康状态,Health 需要是 green
|
|
验证 pod 状态,需都为 Ready,STATUS 为 Running
kubectl get pods –selector=‘elasticsearch.k8s.elastic.co/cluster-name=es’ -n elastic-system 1 验证能否调用 API (需要用户名密码)
|
|
kibana
创建配置文件 创建 kibana.yml 配置文件
|
|
部署
|
|
验证 验证健康状态,Health 需要是 green
|
|
验证 pod 状态,需都为 Ready,STATUS 为 Running
|
|
登录验证
|
|
复制 external ip 到浏览器,打开输入账户密码,登录成功
踩坑及解决方案 elasticsearch pvc 配置不对导致无法正确启动 如果你是按照官方文档如下配置直接照抄,那 elasticsearch 无法正确启动。
原因是官方参考配置中的 storageClassName: standard 不存在,你可以选择删除这一行选择默认配置,也可以选择查看当前支持的 storageClass:
|
|
可以发现,默认是 gp2,还有一个是我在 yaml 中自己定义的 aws-gp3,其实自己定义一个能确保一定存在,不容易出错。
elasticsearch 存储配置对了但无法启动,不配置存储能启动 检查是否 provisioner 是否能开相应的云资源
官方的不支持 AWS gp3 ebs csi driver 是否正常启动 node 是否有权限控制云资源(我遇到的是 IAM role 没有创建设置 EBS 块存储的权限,增加相应的 IAM policy 权限后,就正常了) kibana 默认配置下不能访问 应该修改为 LoadBalancer 或者 ingress,也可以选择把默认的 5601 端口映射为 80,这样可以把公司的域名 CNAME 到 external ip 上,方便直接访问。
|
|
elastic 的 docker 相关镜像
|
|