Helm實戰案例二:在Kubernetes(k8s)上使用helm安裝部署紀錄檔管理系統EFK

2023-06-18 06:00:32

一.系統環境

本文主要基於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簡介

EFK是Elasticsearch、Fluentd和Kibana的縮寫,它們都是開源軟體。這三個軟體組合在一起可以形成一個完整的紀錄檔管理系統,其中:

  • Elasticsearch:用於儲存、索引和搜尋大量的結構化和非結構化資料。
  • Fluentd:用於採集、轉換和傳送紀錄檔資料到Elasticsearch。
  • Kibana:用於視覺化和分析從Elasticsearch中檢索到的資料。

EFK具有以下優點:

  • 開源且免費。
  • 擴充套件性好,可以處理大量的紀錄檔資料。
  • 支援自定義外掛,可以方便地進行擴充套件和客製化。
  • 支援實時查詢和分析,可以快速診斷和解決問題。
  • 支援多種資料視覺化方式,例如柱狀圖、折線圖等。

紀錄檔管理系統EFK架構如下:

kibana首頁如下:

5.1 資料分片

下面進行資料分片,選擇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搭建完畢。

六.解除安裝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中設定存取控制等。