成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

關(guān)于k8s集群容器日志收集的總結(jié)

or0fun / 1141人閱讀

摘要:我推薦你使用進(jìn)行日志收集,將作為的出口。集群目前暫時(shí)沒有提供日志查看機(jī)制。以如下的形式啟動(dòng)容器,容器日志將發(fā)往配置的。

【作者barnett】本文介紹了k8s官方提供的日志收集方法,并介紹了Fluentd日志收集器并與其他產(chǎn)品做了比較。最后介紹了好雨云幫如何對(duì)k8s進(jìn)行改造并使用ZeroMQ以消息的形式將日志傳輸?shù)浇y(tǒng)一的日志處理中心。

容器日志存在形式

目前容器日志有兩種輸出形式:

stdout,stderr標(biāo)準(zhǔn)輸出

這種形式的日志輸出我們可以直接使用docker logs查看日志,k8s集群中同樣集群可以使用kubectl logs類似的形式查看日志。

日志文件記錄

這種日志輸出我們無法從以上方法查看日志內(nèi)容,只能tail日志文件查看。

在k8s官方文檔中,對(duì)于以上兩種形式的日志形式我們?nèi)绻胧占⒎治鋈罩镜脑?,官方推薦以下兩種對(duì)策:
對(duì)于第一種文檔中這樣說:

When a cluster is created, the standard output and standard error output of each container can be ingested using a Fluentd agent running on each node into either Google Cloud Logging or into Elasticsearch and viewed with Kibana.

When a Kubernetes cluster is created with logging to Google Cloud Logging enabled, the system creates a pod called fluentd-cloud-logging on each node of the cluster to collect Docker container logs. These pods were shown at the start of this blog article in the response to the first get pods command.

就說說集群?jiǎn)?dòng)時(shí)會(huì)在每個(gè)機(jī)器啟動(dòng)一個(gè)Fluentd agent收集日志然后發(fā)送給
Elasticsearch。
實(shí)現(xiàn)方式是每個(gè)agent掛載目錄/var/lib/docker/containers使用fluentdtail插件掃描每個(gè)容器日志文件,直接發(fā)送給Elasticsearch。

對(duì)于第二種:

A second container, using the gcr.io/google_containers/fluentd-sidecar-es:1.2 image to send the logs to Elasticsearch. We recommend attaching resource constraints of 100m CPU and 200Mi memory to this container, as in the example.

A volume for the two containers to share. The emptyDir volume type is a good choice for this because we only want the volume to exist for the lifetime of the pod.

Mount paths for the volume in each container. In your primary container, this should be the path that the applications log files are written to. In the secondary container, this can be just about anything, so we put it under /mnt/log to keep it out of the way of the rest of the filesystem.

The FILES_TO_COLLECT environment variable in the sidecar container, telling it which files to collect logs from. These paths should always be in the mounted volume.

其實(shí)跟第一種類似,但是是把Fluentd agent起在業(yè)務(wù)同一個(gè)pod中共享volume然后實(shí)現(xiàn)對(duì)日志文件的收集發(fā)送給Elasticsearch

fluentd分析

對(duì)于fluentd官方對(duì)其的定義是:

#### 統(tǒng)一日志層
Fluentd通過在后端系統(tǒng)之間提供統(tǒng)一的日志記錄層來從后端系統(tǒng)中解耦數(shù)據(jù)源。
此層允許開發(fā)人員和數(shù)據(jù)分析人員在生成日志時(shí)使用多種類型的日志。
統(tǒng)一的日志記錄層可以讓您和您的組織更好地使用數(shù)據(jù),并更快地在您的軟件上進(jìn)行迭代。
也就是說fluentd是一個(gè)面向多種數(shù)據(jù)來源以及面向多種數(shù)據(jù)出口的日志收集器。另外它附帶了日志轉(zhuǎn)發(fā)的功能。

fluentd特點(diǎn)

部署簡(jiǎn)單靈活

開源

經(jīng)過驗(yàn)證的可靠性和性能

社區(qū)支持,插件較多

使用json格式事件格式

可拔插的架構(gòu)設(shè)計(jì)

低資源要求

內(nèi)置高可靠性

fluentd與Logstash

引用一張圖對(duì)比這兩個(gè)日志收集工具。具體它們兩個(gè)項(xiàng)目的對(duì)比請(qǐng)參考:

Fluentd vs. Logstash: A Comparison of Log Collectors

fluentd與zeroMQ

把這兩個(gè)產(chǎn)品放在一起比較實(shí)屬不怎么合適,因?yàn)樗鼈儗儆诓煌年嚑I(yíng),完成不同的功能需求。由于fluentd具有消息轉(zhuǎn)發(fā)的功能,姑且將其與以zeroMQ為例的消息中間件的關(guān)系做個(gè)說明:
在大型系統(tǒng)架構(gòu)中,有使用zeroMQ進(jìn)行大量的日志轉(zhuǎn)發(fā)工作。在fluentd中有兩個(gè)項(xiàng)目完成日志的中轉(zhuǎn)路由的任務(wù):golang編寫的:fluentd-forwarder 和c寫的fluent-bit

那么是否意味著你需要做出選擇呢?其實(shí)不然。
著眼fluentd的定義和zeroMQ的定義。其實(shí)它們是一種合作關(guān)系。如果你是大型的架構(gòu)系統(tǒng),日志量很龐大。我推薦你使用fluentd進(jìn)行日志收集,將zeroMQ作為fluentd的出口。就是說fluentd完成統(tǒng)一收集,zeroMQ完成日志傳輸。如果你的系統(tǒng)并不龐大,你就無需zeroMQ來傳輸了。

因此你也無需關(guān)注這兩個(gè)產(chǎn)品的性能比較。雖然它們都有高性能的定義。

zeroMQ的性能測(cè)試結(jié)果:zeroMQ 與JeroMQ性能對(duì)比

容器日志收集總結(jié)

如上所描述的一樣,無論你的業(yè)務(wù)容器日志呈現(xiàn)方式有什么不同,你都可以使用統(tǒng)一的日志收集器收集。以下簡(jiǎn)介三種情況下日志手機(jī)方式推薦:

k8s集群
這種方式上文中已經(jīng)提到了官方的解決方案,你只需要安裝此方案部署即可。

docker swarm集群
docker swarm目前暫時(shí)沒有提供日志查看機(jī)制。但是docker cloud提供了與kubectrl logs類似的機(jī)制查看stdout的日志。目前還沒有fluentd插件直接對(duì)服務(wù)進(jìn)行日志收集,暫時(shí)考慮直接使用使用跟容器一樣的機(jī)制收集。docker service create 支持--log-driver

自己部署的docker容器
從docker1.8內(nèi)置了fluentd log driver。以如下的形式啟動(dòng)容器,容器stdout/stderr日志將發(fā)往配置的fluentd。如果配置后,docker logs將無法使用。另外默認(rèn)模式下如果你配置得地址沒有正常服務(wù),容器無法啟動(dòng)。你也可以使用fluentd-async-connect形式啟動(dòng),docker daemon則能在后臺(tái)嘗試連接并緩存日志。

docker run --log-driver=fluentd --log-opt fluentd-address=myhost.local:24224

同樣如果是日志文件,將文件暴露出來直接使用fluentd收集。

好雨云幫對(duì)kubernetes服務(wù)日志的統(tǒng)一處理方式 需求是什么?

云幫的公有云服務(wù),平臺(tái)上跑著有企業(yè)級(jí)應(yīng)用和小型用戶應(yīng)用。我們?cè)趺醋龅浇y(tǒng)一的日志收集和展示?又怎么做到面對(duì)企業(yè)級(jí)應(yīng)用的日志輸出和分析?
上面提到的方式不能完全解決我們的問題。

實(shí)踐

首先目前kubernetes版本(v1.5.1)還不支持pod級(jí)別的日志log-driver設(shè)置,但是我們知道容器是可以設(shè)置log-driver的。這里也有關(guān)于這個(gè)問題的討論。我們?yōu)榱藢?shí)現(xiàn)在用戶網(wǎng)絡(luò)(即pod容器網(wǎng)絡(luò))下的可配置日志轉(zhuǎn)發(fā)方式。我們暫時(shí)修改了kubernetes源碼使其支持設(shè)置容器的log-driver。默認(rèn)情況下我們使用自己實(shí)現(xiàn)的zeroMQ-driver直接將容器日志通過0MQ發(fā)到日志統(tǒng)一處理中心。在處理中心統(tǒng)一完成下一步處理。如果平臺(tái)用戶需要將日志向外輸出或者直接對(duì)接平臺(tái)內(nèi)日志分析應(yīng)用,我們的處理是在應(yīng)用pod中啟動(dòng)日志收集插件容器(封裝擴(kuò)展的fluentd),根據(jù)用戶的需要配置日志出口,實(shí)現(xiàn)應(yīng)用級(jí)日志收集。這里你需要明確的是:容器日志首先是由docker-daemon收集到,再根據(jù)容器log-driver配置進(jìn)行相應(yīng)操作,也就是說如果你的宿主機(jī)網(wǎng)絡(luò)與容器網(wǎng)絡(luò)不通(k8s集群),日志從宿主機(jī)到pod中的收集容器只有兩種方式:走外層網(wǎng)絡(luò),文件掛載。
我們采用文件掛載方式。

如果您對(duì)本文提到的k8s官方收集、處理日志以及對(duì)好雨云幫的日志收集方式有疑問或問題,歡迎留言,作者會(huì)在第一時(shí)間解答。

云盟認(rèn)證成員:barnett

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/32526.html

相關(guān)文章

  • 關(guān)于k8s集群容器日志收集總結(jié)

    摘要:我推薦你使用進(jìn)行日志收集,將作為的出口。集群目前暫時(shí)沒有提供日志查看機(jī)制。以如下的形式啟動(dòng)容器,容器日志將發(fā)往配置的。 【作者barnett】本文介紹了k8s官方提供的日志收集方法,并介紹了Fluentd日志收集器并與其他產(chǎn)品做了比較。最后介紹了好雨云幫如何對(duì)k8s進(jìn)行改造并使用ZeroMQ以消息的形式將日志傳輸?shù)浇y(tǒng)一的日志處理中心。 容器日志存在形式 目前容器日志有兩種輸出形式: ...

    jeffrey_up 評(píng)論0 收藏0
  • 拉勾網(wǎng)基于 UK8S平臺(tái)容器化改造實(shí)踐

    摘要:宋體本文從拉勾網(wǎng)的業(yè)務(wù)架構(gòu)日志采集監(jiān)控服務(wù)暴露調(diào)用等方面介紹了其基于的容器化改造實(shí)踐。宋體此外,拉勾網(wǎng)還有一套自研的環(huán)境的業(yè)務(wù)發(fā)布系統(tǒng),不過這套發(fā)布系統(tǒng)未適配容器環(huán)境。寫在前面 拉勾網(wǎng)于 2019 年 3 月份開始嘗試將生產(chǎn)環(huán)境的業(yè)務(wù)從 UHost 遷移到 UK8S,截至 2019 年 9 月份,QA 環(huán)境的大部分業(yè)務(wù)模塊已經(jīng)完成容器化改造,生產(chǎn)環(huán)境中,后臺(tái)管理服務(wù)已全部遷移到 UK8...

    CoorChice 評(píng)論0 收藏0
  • 構(gòu)建與定制:唯品會(huì) PaaS 基于 Kubernetes 實(shí)踐

    摘要:基于年底或年初沒有推廣的現(xiàn)狀,唯品會(huì)部門目前已經(jīng)做了兩年的時(shí)間。唯品會(huì)現(xiàn)狀唯品會(huì)目前線上有一千多個(gè)域,每個(gè)域之間相互的依賴比較復(fù)雜,每次的部署發(fā)布困難。這是唯品會(huì)的架構(gòu),主要包含持續(xù)集成和持續(xù)部署。 數(shù)人云上海&深圳兩地容器之Mesos/K8S/Swarm三國(guó)演義的嘉賓精彩實(shí)錄第三更來啦。唯品會(huì)是數(shù)人云Meetup的老朋友,去年曾做過RPC服務(wù)框架和Mesos容器化的分享。本次分享中,...

    JackJiang 評(píng)論0 收藏0
  • serverless在微店node領(lǐng)域探索應(yīng)用

    摘要:參與者流量來自于內(nèi)部系統(tǒng)和外部流量,其中大部分來自于外部流量。水平擴(kuò)容服務(wù)的水平擴(kuò)容重要性不言而喻。 背景 目前微店中臺(tái)團(tuán)隊(duì)為了滿足公司大部分產(chǎn)品、運(yùn)營(yíng)以及部分后端開發(fā)人員的嘗鮮和試錯(cuò)的需求,提供了一套基于圖形化搭建的服務(wù)端接口交付方案,利用該方案及提供的系統(tǒng)可生成一副包含運(yùn)行時(shí)環(huán)境定義可立即運(yùn)行的工程代碼,最后,通過 某種serverless平臺(tái) 實(shí)現(xiàn)生成后代碼的部署、CI、運(yùn)行、反...

    mikyou 評(píng)論0 收藏0
  • 容器云UK8S】新手指導(dǎo)

    摘要:詳細(xì)請(qǐng)見產(chǎn)品價(jià)格產(chǎn)品概念使用須知名詞解釋漏洞修復(fù)記錄集群節(jié)點(diǎn)配置推薦模式選擇產(chǎn)品價(jià)格操作指南集群創(chuàng)建需要注意的幾點(diǎn)分別是使用必讀講解使用需要賦予的權(quán)限模式切換的切換等。UK8S概覽UK8S是一項(xiàng)基于Kubernetes的容器管理服務(wù),你可以在UK8S上部署、管理、擴(kuò)展你的容器化應(yīng)用,而無需關(guān)心Kubernetes集群自身的搭建及維護(hù)等運(yùn)維類工作。了解使用UK8S為了讓您更快上手使用,享受UK...

    Tecode 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

or0fun

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<