前置准备
- 环境确认
KubeOperator默认安装已经在k8s集群主结点安装了Helm。
可以在主结点执行命令进行验证。
helm
image.png
- 下载镜像
使用docker指令下载相关镜像
docker pull docker.elastic.co/logstash/logstash:7.7.1
docker pull docker.elastic.co/kibana/kibana:7.7.7
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.7.7
docker pull docker.elastic.co/beats/metricbeat:7.7.7
docker pull docker.elastic.co/beats/filebeat:7.7.7
docker pull docker.elastic.co/apm/apm-server:7.7.7
下载完成以后,确认一下
image.png
- 将镜像上传到registry仓库
KubeOperator默认会安装一个私有docker仓库。
要将镜像上传到registry仓库,首先将上面的镜像进行名称修改,在原有镜像名称前加上私有仓库地址路径,如下所示:
docker tag 7f059e3dee67 registry.kubeops.io:8191/docker.elastic.co/logstash/logstash:7.7.1
docker tag 6de54f813b39 registry.kubeops.io:8191/docker.elastic.co/kibana/kibana:7.7.1
docker tag 830a894845e3 registry.kubeops.io:8191/docker.elastic.co/docker.elastic.co/elasticsearch/elasticsearch:7.7.1
......
然后在结点上登录镜像私仓库用户
docker login registry.kubeops.io:8191
Username: admin #用户名
Password: #密码,KubeOperator默认为admin123
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
登录以后,将镜像提交到私仓中。
docker push registry.kubeops.io:8191/docker.elastic.co/logstash/logstash:7.7.1
docker push registry.kubeops.io:8191/docker.elastic.co/kibana/kibana:7.7.1
docker push registry.kubeops.io:8191/docker.elastic.co/docker.elastic.co/elasticsearch/elasticsearch:7.7.1
... ...
- 将ELK部署的charts文件下载到K8S集群主结点。
从elastic官方GIT地址下载helm部署文件。
我这里使用的是7.7.1版本,所以版本链接地址为7.7.1
解压压缩包到指定目录下,如:/home/root/helm/helm-charts-7.7
ELK安装
查看charts目录,每一个目录及为ELK组件的配置文件。
关于Helm Charts的说明,可以查看了解。
首先需要安装elasticesearch,其它的可以无序安装。
- 确认安装配置
使用以下命令,查看一下默认elasticsearch安装配置
helm install --dry-run --debug ./elasticsearch
通过查看,对参数不对的地方进行调整,主要是修改./helm-charts/elasticsearch/下的values.xml文件,如:
镜像 : 因为提交到私库以后,镜像多了私仓前缀,所以要改为
registry.kubeops.io:8191/docker.elastic.co/elasticsearch/elasticsearch:7.7.1
主结点数量: 因为是测试环境,主结点一个就可以了。
工作结点数量:因为是测试环境,两个结点就可以了,没有多大数据量。
image.png
其它参数就看情况进行配置就行,修改完成以后执行上的命令试安装一下。
- 安装
确认安装配置没问题以后就可以正式安装了,安装命令如下:
helm install --namespace=elk --name elasticsearch ./elasticsearc
相关日志如下所示:
image.png
- 安装情况查看
使用命令可以查看安装的情况
kubectl get all -n elk
image.png
*删除安装
如果安装有问题,可以删除安装
helm delete --purge elasticsearch
通过以上相同方式,安装kibana以及logstash
helm install --dry-run --debug ./kibana
helm install --namespace=elk --name kibana ./kibana
helm install --dry-run --debug ./logstash
helm install --namespace=elk --name logstash ./logstash
其它组件安装 - cerebro安装
cerebro可以提供UI界面管理elasticesearch创建的索引文件
首先下载镜像
docker pull lmenezes/cerebro:0.9.2
下载charts
https://kubernetes-charts.storage.googleapis.com/cerebro-1.9.2.tgz
安装
helm install --dry-run --debug ./cerebro
helm install --namespace=elk --name cerebro ./cerebro
其它注意事项
local-volume
由于使用rook-ceph 异常比较差,而且很容易出现异常(CPU飙升为100%)。
所以后续K8S改为local-volume,但基于helm-charts部署的时候,发现master-0以外的结点一直处于pending状态,后面查询对应pod,发现是没有匹配的pv。
再继续查看,发现除了master-0有创建对应的pv,其它的pod都没有创建对应的pv,所以这个pv需要手动创建一下。
可以基于自动创建的pv作为参考进行修改:elk/elasticsearch-master-elasticsearch-master-0 。
相关配置可以考虑以下:
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/bound-by-controller: "yes"
finalizers:
- kubernetes.io/pv-protection
name: local-pv-elk1 #pv name
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 100Gi
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: elasticsearch-master-elasticsearch-master-1 # pvc name
namespace: elk # pvc namesapce
local:
path: /home/local-volume/elk # k8s node path
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- worker2.mycluster.k8s.com # k8s nodeName
persistentVolumeReclaimPolicy: Retain
storageClassName: storageclass-default
volumeMode: Filesystem
网友评论