我們先創建elasticsearch-storageclass.yaml

然后我們創建pvc來對應這個storageclass

elasticsearch-pvc.yaml

最后我們創建這個statefulset

elasticsearch-statefulset.yaml

然后我們使用kubectl創建

kubectl apply -f elasticsearch-storageclass.yaml

kubectl apply -f elasticsearch-pvc.yaml

kubectl apply -f elasticsearch-statefulset.yaml

然后我們查看pod的運行情況

Pods 部署完成后,我們可以通過請求一個 REST API 來檢查 Elasticsearch 集群是否正常運行。使用下面的命令將本地端口9200轉發到 Elasticsearch 節點(如es-cluster-0)對應的端口:

然后我們開另一個窗口

正常來說,應該會有這樣的信息。

看到上面的信息就表明我們名為 k8s-logs 的 Elasticsearch 集群成功創建了3個節點:es-cluster-0,es-cluster-1,和es-cluster-2,當前主節點是 es-cluster-0。

2.創建 Kibana 服務

Elasticsearch 集群啟動成功了,接下來我們可以來部署 Kibana 服務,新建一個名為 kibana.yaml 的文件,對應的文件內容如下:

上面我們定義了兩個資源對象,一個 Service 和 Deployment,為了測試方便,我們將 Service 設置為了 NodePort 類型,Kibana Pod 中配置都比較簡單,唯一需要注意的是我們使用 ELASTICSEARCH_URL 這個環境變量來設置Elasticsearch 集群的端點和端口,直接使用 Kubernetes DNS 即可,此端點對應服務名稱為 elasticsearch,由于是一個 headless service,所以該域將解析為3個 Elasticsearch Pod 的 IP 地址列表。

然后我們創建這個服務

kubectl apply -f kibana.yaml

過了一會,我們的kibana的服務就起來了。

如果 Pod 已經是 Running 狀態了,證明應用已經部署成功了,然后可以通過 NodePort 來訪問 Kibana 這個服務,在瀏覽器中打開http://<任意節點IP>:30245即可,如果看到如下歡迎界面證明 Kibana 已經成功部署到了 Kubernetes集群之中。

3.部署 Fluentd

Fluentd 是一個高效的日志聚合器,是用 Ruby 編寫的,并且可以很好地擴展。對于大部分企業來說,Fluentd 足夠高效并且消耗的資源相對較少,另外一個工具Fluent-bit更輕量級,占用資源更少,但是插件相對 Fluentd 來說不夠豐富,所以整體來說,Fluentd 更加成熟,使用更加廣泛,所以我們這里也同樣使用 Fluentd 來作為日志收集工具。

工作原理
Fluentd 通過一組給定的數據源抓取日志數據,處理后(轉換成結構化的數據格式)將它們轉發給其他服務,比如 Elasticsearch、對象存儲等等。Fluentd 支持超過300個日志存儲和分析服務,所以在這方面是非常靈活的。主要運行步驟如下:

首先 Fluentd 從多個日志源獲取數據
結構化并且標記這些數據
然后根據匹配的標簽將數據發送到多個目標服務去

日志源配置
比如我們這里為了收集 Kubernetes 節點上的所有容器日志,就需要做如下的日志源配置:

路由配置
上面是日志源的配置,接下來看看如何將日志數據發送到 Elasticsearch:

match:標識一個目標標簽,后面是一個匹配日志源的正則表達式,我們這里想要捕獲所有的日志并將它們發送給 Elasticsearch,所以需要配置成**。
id:目標的一個唯一標識符。
type:支持的輸出插件標識符,我們這里要輸出到 Elasticsearch,所以配置成 elasticsearch,這是 Fluentd 的一個內置插件。
log_level:指定要捕獲的日志級別,我們這里配置成info,表示任何該級別或者該級別以上(INFO、WARNING、ERROR)的日志都將被路由到 Elsasticsearch。
host/port:定義 Elasticsearch 的地址,也可以配置認證信息,我們的 Elasticsearch 不需要認證,所以這里直接指定 host 和 port 即可。
logstash_format:Elasticsearch 服務對日志數據構建反向索引進行搜索,將 logstash_format 設置為true,Fluentd 將會以 logstash 格式來轉發結構化的日志數據。
Buffer: Fluentd 允許在目標不可用時進行緩存,比如,如果網絡出現故障或者 Elasticsearch 不可用的時候。緩沖區配置也有助于降低磁盤的 IO。
4.安裝
要收集 Kubernetes 集群的日志,直接用 DasemonSet 控制器來部署 Fluentd 應用,這樣,它就可以從 Kubernetes 節點上采集日志,確保在集群中的每個節點上始終運行一個 Fluentd 容器。當然可以直接使用 Helm 來進行一鍵安裝,為了能夠了解更多實現細節,我們這里還是采用手動方法來進行安裝。

首先,我們通過 ConfigMap 對象來指定 Fluentd 配置文件,新建 fluentd-configmap.yaml 文件,文件內容如下:

上面配置文件中我們配置了 docker 容器日志目錄以及 docker、kubelet 應用的日志的收集,收集到數據經過處理后發送到 elasticsearch:9200 服務。

然后新建一個 fluentd-daemonset.yaml 的文件,文件內容如下:

我們將上面創建的 fluentd-config 這個 ConfigMap 對象通過 volumes 掛載到了 Fluentd 容器中,另外為了能夠靈活控制哪些節點的日志可以被收集,所以我們這里還添加了一個 nodSelector 屬性:

另外由于我們的集群使用的是 kubeadm 搭建的,默認情況下 master 節點有污點,所以要想也收集 master 節點的日志,則需要添加上容忍:

然后我們創建上面的configmap對象和daemonset服務

我們查看可以看到pod已經正常運行了。

然后我們進入kibana的頁面,點擊discover

在這里可以配置我們需要的 Elasticsearch 索引,前面 Fluentd 配置文件中我們采集的日志使用的是 logstash 格式,這里只需要在文本框中輸入logstash-*即可匹配到 Elasticsearch 集群中的所有日志數據,然后點擊下一步,進入以下頁面:

在該頁面中配置使用哪個字段按時間過濾日志數據,在下拉列表中,選擇@timestamp字段,然后點擊Create index pattern,創建完成后,點擊左側導航菜單中的Discover,然后就可以看到一些直方圖和最近采集到的日志數據了:

更多關于云服務器域名注冊,虛擬主機的問題,請訪問三五互聯官網:m.shinetop.cn

贊(1)
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:三五互聯知識庫 » k8s搭建efk

登錄

找回密碼

注冊

主站蜘蛛池模板: 亚洲高清成人av在线| 国产jizzjizz视频| 比如县| 亚洲AV成人片不卡无码| 国产精品办公室沙发| 亚洲国产天堂久久综合226114| 亚洲国产精品第一区二区| 国产精品中文字幕综合| 元码人妻精品一区二区三区9| 无码人妻精品一区二区三区下载| 亚洲综合国产激情另类一区| 99热精品久久只有精品| 亚洲ΑV久久久噜噜噜噜噜| 日本深夜福利在线观看| 久久久久免费看成人影片| 精品综合一区二区三区四区| 最近高清中文在线字幕在线观看| 精品一区二区三区无码视频| 成人啪啪高潮不断观看| 亚洲高清国产自产拍av| 国产成人亚洲综合图区| 亚洲gv猛男gv无码男同| 高清在线一区二区三区视频| 日韩中文字幕V亚洲中文字幕| 久久综合激情网| 亚洲高清WWW色好看美女| 色综合久久人妻精品日韩| 中文字幕在线不卡一区二区| 中文字幕av一区二区| 日韩乱码视频一区二区三区| 亚洲欧洲av人一区二区| 亚洲在线一区二区三区四区| 狠狠躁夜夜躁人人爽天天5| 国产真人无码作爱免费视频app| 国产精品天干天干综合网| 呼图壁县| 久久国产自拍一区二区三区 | 色伦专区97中文字幕| 长兴县| 99久久亚洲综合精品成人| 99久久精品国产一区二区蜜芽|