成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

如何在Kubernetes中搭建Elasticsearch集群-創(chuàng)新互聯(lián)

這篇文章給大家分享的是Kubernetes搭建Elasticsearch集群的教程。小編覺得挺實用的,因此分享給大家學習。如下資料是關于搭建Elasticsearch的內(nèi)容。

創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網(wǎng)站設計、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的克拉瑪依網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!

Elasticsearch 是一個實時的、分布式的可擴展的搜索引擎,允許進行全文、結(jié)構化搜索,它通常用于索引和搜索大量日志數(shù)據(jù),也可用于搜索許多不同類型的文檔。

Elasticsearch 通常與 Kibana 一起部署,Kibana 是 Elasticsearch 的一個功能強大的數(shù)據(jù)可視化 Dashboard,Kibana 允許你通過 web 界面來瀏覽 Elasticsearch 日志數(shù)據(jù)。

Fluentd是一個流行的開源數(shù)據(jù)收集器,我們將在 Kubernetes 集群節(jié)點上安裝 Fluentd,通過獲取容器日志文件、過濾和轉(zhuǎn)換日志數(shù)據(jù),然后將數(shù)據(jù)傳遞到 Elasticsearch 集群,在該集群中對其進行索引和存儲。

我們先來配置啟動一個可擴展的 Elasticsearch 集群,然后在 Kubernetes 集群中創(chuàng)建一個 Kibana 應用,最后通過 DaemonSet 來運行 Fluentd,以便它在每個 Kubernetes 工作節(jié)點上都可以運行一個 Pod。

1.創(chuàng)建 Elasticsearch 集群

在創(chuàng)建 Elasticsearch 集群之前,我們先創(chuàng)建一個命名空間。

新建一個kube-efk.yaml

如何在Kubernetes中搭建Elasticsearch集群

kubectl  apply  -f  kube-efk.yaml

kubectl  get  ns  查看有沒有這個efk的命名空間

這里我們使用3個 Elasticsearch Pod 來避免高可用下多節(jié)點集群中出現(xiàn)的“腦裂”問題,當一個或多個節(jié)點無法與其他節(jié)點通信時會產(chǎn)生“腦裂”,可能會出現(xiàn)幾個主節(jié)點。

一個關鍵點是您應該設置參數(shù)discover.zen.minimum_master_nodes=N/2+1,其中N是 Elasticsearch 集群中符合主節(jié)點的節(jié)點數(shù),比如我們這里3個節(jié)點,意味著N應該設置為2。這樣,如果一個節(jié)點暫時與集群斷開連接,則另外兩個節(jié)點可以選擇一個新的主節(jié)點,并且集群可以在最后一個節(jié)點嘗試重新加入時繼續(xù)運行,在擴展 Elasticsearch 集群時,一定要記住這個參數(shù)。

首先創(chuàng)建一個名為 elasticsearch 的無頭服務,新建文件 elasticsearch-svc.yaml,文件內(nèi)容如下:

如何在Kubernetes中搭建Elasticsearch集群

定義了一個名為 elasticsearch 的 Service,指定標簽app=elasticsearch,當我們將 Elasticsearch StatefulSet 與此服務關聯(lián)時,服務將返回帶有標簽app=elasticsearch的 Elasticsearch Pods 的 DNS A 記錄,然后設置clusterIP=None,將該服務設置成無頭服務。最后,我們分別定義端口9200、9300,分別用于與 REST API 交互,以及用于節(jié)點間通信。

然后我們創(chuàng)建這個無頭服務

kubectl  apply  -f  elasticsearch-svc.yaml

如何在Kubernetes中搭建Elasticsearch集群

現(xiàn)在我們已經(jīng)為 Pod 設置了無頭服務和一個穩(wěn)定的域名.elasticsearch.logging.svc.cluster.local,接下來我們通過 StatefulSet 來創(chuàng)建具體的 Elasticsearch 的 Pod 應用。

Kubernetes StatefulSet 允許我們?yōu)?Pod 分配一個穩(wěn)定的標識和持久化存儲,Elasticsearch 需要穩(wěn)定的存儲來保證 Pod 在重新調(diào)度或者重啟后的數(shù)據(jù)依然不變,所以需要使用 StatefulSet 來管理 Pod。

我們使用了一個名為 es-data-db 的 StorageClass 對象,所以我們需要提前創(chuàng)建該對象,我們這里使用的 NFS 作為存儲后端,所以需要安裝一個對應的 provisioner 驅(qū)動,
我們先創(chuàng)建elasticsearch-storageclass.yaml

如何在Kubernetes中搭建Elasticsearch集群

然后我們創(chuàng)建pvc來對應這個storageclass

elasticsearch-pvc.yaml

如何在Kubernetes中搭建Elasticsearch集群

最后我們創(chuàng)建這個statefulset

elasticsearch-statefulset.yaml

如何在Kubernetes中搭建Elasticsearch集群
如何在Kubernetes中搭建Elasticsearch集群
如何在Kubernetes中搭建Elasticsearch集群

然后我們使用kubectl創(chuàng)建

kubectl apply -f elasticsearch-storageclass.yaml

kubectl apply -f elasticsearch-pvc.yaml

kubectl apply -f elasticsearch-statefulset.yaml

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

如何在Kubernetes中搭建Elasticsearch集群

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

如何在Kubernetes中搭建Elasticsearch集群

然后我們開另一個窗口

如何在Kubernetes中搭建Elasticsearch集群

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

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

2.創(chuàng)建 Kibana 服務

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

如何在Kubernetes中搭建Elasticsearch集群
如何在Kubernetes中搭建Elasticsearch集群

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

然后我們創(chuàng)建這個服務

kubectl  apply  -f  kibana.yaml

如何在Kubernetes中搭建Elasticsearch集群

過了一會,我們的kibana的服務就起來了。
如何在Kubernetes中搭建Elasticsearch集群
如果 Pod 已經(jīng)是 Running 狀態(tài)了,證明應用已經(jīng)部署成功了,然后可以通過 NodePort 來訪問 Kibana 這個服務,在瀏覽器中打開http://<任意節(jié)點IP>:30245即可,如果看到如下歡迎界面證明 Kibana 已經(jīng)成功部署到了 Kubernetes集群之中。

如何在Kubernetes中搭建Elasticsearch集群

3.部署 Fluentd

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

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

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

如何在Kubernetes中搭建Elasticsearch集群

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

如何在Kubernetes中搭建Elasticsearch集群

路由配置
上面是日志源的配置,接下來看看如何將日志數(shù)據(jù)發(fā)送到 Elasticsearch:

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

首先,我們通過 ConfigMap 對象來指定 Fluentd 配置文件,新建 fluentd-configmap.yaml 文件,文件內(nèi)容如下:
如何在Kubernetes中搭建Elasticsearch集群

如何在Kubernetes中搭建Elasticsearch集群
如何在Kubernetes中搭建Elasticsearch集群

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

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

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

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

如何在Kubernetes中搭建Elasticsearch集群

然后我們創(chuàng)建上面的configmap對象和daemonset服務

如何在Kubernetes中搭建Elasticsearch集群

如何在Kubernetes中搭建Elasticsearch集群

我們查看可以看到pod已經(jīng)正常運行了。

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

如何在Kubernetes中搭建Elasticsearch集群

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

如何在Kubernetes中搭建Elasticsearch集群

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

如何在Kubernetes中搭建Elasticsearch集群

更多相關知識文章:

ElasticSearch集群如何安裝和配置

k8s如何部署elasticsearch集群

關于在Kubernetes中搭建Elasticsearch集群的教程就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

分享標題:如何在Kubernetes中搭建Elasticsearch集群-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://jinyejixie.com/article46/csheeg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號、品牌網(wǎng)站制作、動態(tài)網(wǎng)站、定制開發(fā)、手機網(wǎng)站建設、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
华容县| 东城区| 昭觉县| 邢台市| 通海县| 建水县| 苍溪县| 广州市| 焦作市| 建宁县| 河北省| 武功县| 江山市| 武安市| 蓬安县| 石楼县| 沙坪坝区| 堆龙德庆县| 临江市| 合作市| 浦江县| 息烽县| 柳林县| 衡阳市| 八宿县| 中阳县| 克什克腾旗| 循化| 永顺县| 萨嘎县| 松桃| 静乐县| 无为县| 依兰县| 磴口县| 河东区| 宾川县| 电白县| 黄浦区| 临城县| 永德县|