本文主要基於Kubernetes1.21.9和Linux作業系統CentOS7.4。
伺服器版本 | EFK版本 | docker軟體版本 | Kubernetes(k8s)叢集版本 | CPU架構 |
---|---|---|---|---|
CentOS Linux release 7.4.1708 (Core) | 7.9.1 | Docker version 20.10.12 | v1.21.9 | x86_64 |
Kubernetes叢集架構:k8scloude1作為master節點,k8scloude2,k8scloude3作為worker節點。
伺服器 | 作業系統版本 | CPU架構 | 程序 | 功能描述 |
---|---|---|---|---|
k8scloude1/192.168.110.130 | CentOS Linux release 7.4.1708 (Core) | x86_64 | docker,kube-apiserver,etcd,kube-scheduler,kube-controller-manager,kubelet,kube-proxy,coredns,calico | k8s master節點 |
k8scloude2/192.168.110.129 | CentOS Linux release 7.4.1708 (Core) | x86_64 | docker,kubelet,kube-proxy,calico | k8s worker節點 |
k8scloude3/192.168.110.128 | CentOS Linux release 7.4.1708 (Core) | x86_64 | docker,kubelet,kube-proxy,calico | k8s worker節點 |
隨著應用程式數量和規模的增長,紀錄檔管理變得越來越重要。紀錄檔管理系統可以幫助我們收集、儲存、分析和視覺化紀錄檔資料,以便快速診斷問題、監控效能等。在Kubernetes上部署一個可靠的紀錄檔管理系統是非常必要的。
在Kubernetes(k8s)上使用helm安裝部署紀錄檔管理系統EFK的前提是已經有一套可以正常執行的Kubernetes叢集,關於Kubernetes(k8s)叢集的安裝部署,可以檢視部落格《Centos7 安裝部署Kubernetes(k8s)叢集》https://www.cnblogs.com/renshengdezheli/p/16686769.html。
EFK是Elasticsearch、Fluentd和Kibana的縮寫,它們都是開源軟體。這三個軟體組合在一起可以形成一個完整的紀錄檔管理系統,其中:
EFK具有以下優點:
紀錄檔管理系統EFK架構如下:
kibana首頁如下:
下面進行資料分片,選擇Home-->Discover。
點選Create index pattern。
如下為Create index pattern介面。
能看到如下四個index說明EFK環境沒問題。
選擇filebeat,點選下一步。
建立索引分割區。
下面是filebeat*的所有欄位。
再次點選Home-->Discover。
現在就可以看到紀錄檔了。
繼續Create index pattern。
使用相同的方法建立index,選擇metricbeat*。
點選Create index pattern。
metricbeat*的欄位如下。
index patterns預設是filebeat*。
點選Discover。
可以切換檢視不同的分割區,右邊顯示的是對應的紀錄檔。
自此EFK搭建完畢。
檢視helm安裝的應用。
[root@k8scloude1 ~]# helm ls
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
elasticsearch helm 1 2022-03-17 11:09:05.996472752 +0800 CST deployed elasticsearch-7.9.1 7.9.1
filebeat helm 1 2022-03-17 11:18:04.921145429 +0800 CST deployed filebeat-7.9.1 7.9.1
kibana helm 1 2022-03-17 11:41:50.305787166 +0800 CST deployed kibana-7.9.1 7.9.1
metricbeat helm 1 2022-03-17 11:31:18.353579301 +0800 CST deployed metricbeat-7.9.1 7.9.1
helm刪除EFK。
[root@k8scloude1 ~]# helm delete elasticsearch
W0317 16:06:49.291827 76335 warnings.go:70] policy/v1beta1 PodDisruptionBudget is deprecated in v1.21+, unavailable in v1.25+; use policy/v1 PodDisruptionBudget
release "elasticsearch" uninstalled
[root@k8scloude1 ~]# helm delete filebeat
W0317 16:07:01.497539 76726 warnings.go:70] rbac.authorization.k8s.io/v1beta1 ClusterRoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRoleBinding
W0317 16:07:01.507858 76726 warnings.go:70] rbac.authorization.k8s.io/v1beta1 ClusterRole is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRole
release "filebeat" uninstalled
[root@k8scloude1 ~]# helm delete kibana
release "kibana" uninstalled
[root@k8scloude1 ~]# helm delete metricbeat
W0317 16:07:14.955659 77279 warnings.go:70] rbac.authorization.k8s.io/v1beta1 ClusterRoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRoleBinding
W0317 16:07:14.955676 77279 warnings.go:70] rbac.authorization.k8s.io/v1beta1 ClusterRoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRoleBinding
W0317 16:07:15.014182 77279 warnings.go:70] rbac.authorization.k8s.io/v1beta1 ClusterRole is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRole
W0317 16:07:15.014449 77279 warnings.go:70] rbac.authorization.k8s.io/v1beta1 ClusterRole is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRole
release "metricbeat" uninstalled
刪除EFK之後,對應的pod和svc都被刪除了。
[root@k8scloude1 ~]# helm ls
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
[root@k8scloude1 ~]# kubectl get pod
No resources found in helm namespace.
[root@k8scloude1 ~]# kubectl get svc
No resources found in helm namespace.
通過本文,我們學會了如何使用Helm在Kubernetes上部署一個紀錄檔管理系統EFK。我們使用Helm安裝了Elasticsearch、Fluentd和Kibana,存取了Kibana的Web介面,進行資料分片,最後看到了源源不斷的紀錄檔。
本文給出的例子僅僅是EFK紀錄檔管理系統的一個基本設定,實際上可以根據需求進行進一步的客製化和擴充套件。例如,需要更高階的資料視覺化功能,可以將Grafana整合到EFK紀錄檔管理系統中;另外,在部署EFK時需要注意一些安全性問題,比如需要在Elasticsearch中設定存取控制等。