- 说明
- 镜像等文件
- 监控管理【prometheus】
- 框架说明
- 部署prometheus【mon节点】
- 登陆prometheus
- 用户名密码查看
- 模版的使用
- 日志管理【helm3 安装(部署)EFK【elk的升级版】】
- 架构说明
- 运行环境说明【必看】
- 安装所需包提前下载
- 镜像准备导入
- 安装流程
- 1、增加efk官方helm源
- 2.下载并安装elasticsearch
- 3.下载并安装filebeat
- 4.下载并安装metricbeat
- 5.下载安装kibana
- 6.访问kibana
之前有一篇博客对k8s的helm包做了详细说明,如下:
【Kubernetes】k8s的helm包管理与应用详细说明与 *** 作【helm安装、heml仓库管理和搭建私有仓库】
- 镜像查看【需要先配置好helm源,这里是配置的ali源】【集群必须通外网才能部署啊】
helm search repo prometheus-operator
- 安装prometheus
helm install mon ali/prometheus-operator【后面就是上面查询到的helm信息】
下载完毕以后呢就会有一个helm信息了
- 同时会自动生成很多pod,等待,让这些pod状态全部为running
- 编辑mon-grafana的这个pod,修改里面的TYPE类型为Nodeport
kubectl edit svc mon-grafana【下面第二张图的TYPE是修改后的效果】
- 删除上面的helm内容
helm del mon
-
先执行kubectl get svc找到mon-grafana映射的端口号
-
然后使用在浏览器输入任意nodeIP:上面的端口号即可进到prometheus界面
但是呢,我们现在是不知道用户名和密码的,别急,接着往下看。
-
用户名和密码都是放在secret里面的一个mon-grafana容器里面的
-
所以我们现在可以通过这个容器来反编译密码出来
-
然后通过上面查看到的用户名和密码,到网站的登陆界面输入登陆
登陆成功以后呢,就是这个界面
上面界面只是自带的,更多显示模版可以去官网上下载的,因为我集群没有外网,这个实验没法做,可以自行网上搜索prometheus的模版使用,教程有很多。
Grafane官网
实际上日志管理就相当于部署EFK的流程,所以下面部署完EFK,就相当于搭建好日志管理的kibana软件了【部署的每个功能看下面架构说明中注释哈】。
架构说明- ELK
- Elasticsearch #是个开源分布式搜索引擎,存储日志及提供查询接口。
- Logstash #是一个完全开源的工具,他可以对日志进行收集 发送给Elasticsearch.
- Kibana #是一个开源和免费的,web界面的工具,可以让用户浏览Elasticsearch里的日志.
- logstash性能低,消耗资源,且存在不支持消息队列缓存及存在数据丢失的问题
所以logstash一般可以用fluentd或者filebeat替代
如果使用上面2种替代以后呢,就叫做EFK框架
- 其中vms61 是master,vms62 和vms62 位worker。
- 在所有节点上修改/var/lib/kubelet/config.yaml,在最后一行添加:
featureGates: CSIMigration: false
- 否则查看pod 状态时会报如下错误:
MountVolume.SetUp failed for volume "default-token-bd9jk" : failed to sync secret cache: timed out waiting for the condition
不过不改也没关系。
安装所需包提前下载- 可以通过网址自行下载,也可以在下面 下载我上传的
wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/fluentd-elasticsearch/es-statefulset.yaml wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/fluentd-elasticsearch/es-service.yaml wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/fluentd-elasticsearch/fluentdes-configmap.yaml wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/fluentd-elasticsearch/fluentd-es-ds.yaml wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/fluentd-elasticsearch/kibana-service.yaml wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/fluentd-elasticsearch/kibana-deployment.yaml
- 下面所有用到的包,我都已经打包放在这里面了【压缩后只有不到800M,是正常的,解压出来有下面所有东西】
下载地址:
- 将下面所有下载的包都放到这个路径里面【不下载也要进入到这个路径,后面再次下载的时候也统一下载到这个路径里面】
[root@vms61 ~]# mkdir efk ; cd efk [root@vms61 efk]#镜像准备导入
-
首先将上面文件中的4个镜像拷贝到全部node节点里面
【如果没有下载我上面的文件,需要自己单独去下载这4个镜像,镜像名称是下图中.tar结尾的4个文件。】
-
然后全部node节点和master节点都导入这4个镜像
这使用了for语句一次导入4个,也可以分批导入该4个镜像的。
-
全部导入完毕以后呢,可以在所有机子上删除这几个镜像,节省空间【也可以不用删除】
删除以后呢,所有主机上还剩4个.tgz的文件
rm -rf *.tar
- 最后确认下当前集群pod是不是都是运行的【全是running的为正常】
[root@vms61 efk] helm repo add elastic https://helm.elastic.co "elastic" has been added to your repositories [root@vms61 efk] [root@vms61 efk] helm repo list NAME URL azure http://mirror.azure.cn/kubernetes/charts/ ali https://apphub.aliyuncs.com elastic https://helm.elastic.co [root@vms61 efk]2.下载并安装elasticsearch
- 下载【如果已经下载我上传的文件,跳过执行pull的步骤】
[root@vms61 efk] helm pull elastic/elasticsearch
-
用命令tar zxvf elasticsearch-7.9.1.tgz 解压下载下来的elasticsearch-7.9.1.tgz,得到一个目录elasticsearch。
上面的流程呢,就是下图这样的,所以我们可以直接从tar开始【后面如此,我就不放图了】
-
用vim 编辑elasticsearch/values.yaml,修改如下部分:
-
因为我们环境一台master,2 台worker,所以replicas 修改为2。
-
因为不准备使用持久性存储,所以这里把persistence 下面的enabled 值有true 改为false。
-
这里用的指定了elasticsearch 用的镜像为本地的【如果不指定可能会因为网络等问题导致失败,所以最好是提前在所有节点上提前下载下来】【镜像如果没有imagePullPolicy=imagePullPolicy就加上】:,之后保存退出。
-
-
安装
命令里的elastic 是应用的名字可以随意写,elasticsearch 是解压出来的文件夹。
[root@vms61 efk]# helm install elastic elasticsearch NAME: elastic LAST DEPLOYED: Sat Sep 12 18:38:08 2020 NAMESPACE: ns6 STATUS: deployed REVISION: 1 NOTES: 1. Watch all cluster members come up. $ kubectl get pods --namespace=ns6 -l app=elasticsearch-master -w 2. Test cluster health using Helm test. $ helm test elastic --cleanup [root@vms61 efk]#
- 这里大概1 分钟左右,对应的pod 会运行起来:
[root@vms61 efk]# kubectl get pods NAME READY STATUS RESTARTS AGE elasticsearch-master-0 1/1 Running 0 80s elasticsearch-master-1 1/1 Running 0 79s [root@vms61 efk]#3.下载并安装filebeat
- 下载【如果已经下载我上传的文件,跳过执行pull的步骤】
[root@vms61 efk] helm pull elastic/filebeat
- 用命令tar zxvf filebeat-7.9.1.tgz解压下载下来的filebeat-7.9.1.tgz,得到一个目录filebeat。
- 用vim 编辑filebeat/values.yaml,查看如下部分【镜像如果没有imagePullPolicy=imagePullPolicy就加上】:
建议提前把所需镜像在所有节点上下载下来,其他不需要编辑什么,保存退出。
- 开始安装filebeat:
[root@vms61 efk]# helm install fb filebeat NAME: fb LAST DEPLOYED: Sat Sep 12 18:47:20 2020 NAMESPACE: ns6 STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: 1. Watch all containers come up. $ kubectl get pods --namespace=ns6 -l app=fb-filebeat -w [root@vms61 efk]#
- 命令里的fb 是应用的名字可以随意写,filebeat 是解压出来的文件夹。
大概20 秒就好:
[root@vms61 efk]# kubectl get pods NAME READY STATUS RESTARTS AGE elasticsearch-master-0 1/1 Running 0 9m33s elasticsearch-master-1 1/1 Running 0 9m32s fb-filebeat-lgm76 1/1 Running 0 21s fb-filebeat-trz5m 1/1 Running 0 21s [root@vms61 efk]#4.下载并安装metricbeat
- 下载metricbeat:【如果已经下载我上传的文件,跳过执行pull的步骤】
[root@vms61 efk] helm pull elastic/metricbeat
- 用命令tar zxvf metricbeat-7.9.1.tgz 解压下载下来的metricbeat-7.9.1.tgz,得到一个目录metricbeat,这个没啥需要改的【镜像如果没有imagePullPolicy=imagePullPolicy就加上】:,直接安装即可。
- 类似前面的方法把所有的镜像提前在所有节点下载下来,开始安装:
[root@vms61 efk]# helm install metric metricbeat NAME: metric LAST DEPLOYED: Sat Sep 12 18:53:55 2020 NAMESPACE: ns6 STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: 1. Watch all containers come up. $ kubectl get pods --namespace=ns6 -l app=metric-metricbeat -w [root@vms61 efk]#
- 命令里的metric 是应用的名字可以随意写,metricbeat 是解压出来的文件夹。
这里大概40 秒钟左右,对应的pod 会运行起来:
[root@vms61 efk]# kubectl get pods NAME READY STATUS RESTARTS AGE ...输出... metric-kube-state-metrics-76c5b9fdbf-4jmnr 1/1 Running 0 46s metric-metricbeat-bbbxx 1/1 Running 0 46s metric-metricbeat-metrics-696b596c6f-lwp74 1/1 Running 0 46s metric-metricbeat-z7x7v 1/1 Running 0 46s [root@vms61 efk]#5.下载安装kibana
- 下载【如果已经下载我上传的文件,跳过执行pull的步骤】
[root@vms61 efk]# helm pull elastic/kibana
- 用命令tar zxvf kibana-7.9.1.tgzz 解压下载下来的kibana-7.9.1.tgz,得到一个目录kibana。
- 类似前面的方法把所有的镜像提前在所有节点下载下来,并把服务类型改为NodePort【镜像如果没有imagePullPolicy=imagePullPolicy就加上】::
保存退出之后,开始安装:
[root@vms61 efk]# helm install kb kibana NAME: kb LAST DEPLOYED: Sat Sep 12 18:58:36 2020 NAMESPACE: ns6 STATUS: deployed REVISION: 1 TEST SUITE: None [root@vms61 efk]#
- 命令里的kb 是应用的名字可以随意写,kibana 是解压出来的文件夹。
这里大概2 分钟左右,对应的pod 会运行起来:
[root@vms61 efk]# kubectl get pods NAME READY STATUS RESTARTS AGE ...输出... kb-kibana-d97c78c6-nqt5p 1/1 Running 0 2m1s ...输出... [root@vms61 efk]#
- 注意两台worker 的配置是:分别8G 内存,4 核CPU【这是最低配置】
通过kubectl get svc 查看当前kibana 对应的NodePort 端口为30729 ,在浏览器里输入
192.168.26.61:30729回车
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)