久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Kubernetes日志有關(guān)知識點有哪些

146次閱讀
沒有評論

共計 2242 個字符,預(yù)計需要花費 6 分鐘才能閱讀完成。

丸趣 TV 小編給大家分享一下 Kubernetes 日志有關(guān)知識點有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

關(guān)于日志 #1 多種多樣的日志

應(yīng)用程序具有日志,用于排查問題。集群具有日志,用于排查問題。容器環(huán)境具有日志機(jī)制,容器化應(yīng)用應(yīng)將日志寫入標(biāo)準(zhǔn)輸出與標(biāo)準(zhǔn)錯誤。

#2 但這些日志機(jī)制存在問題

但是由容器引擎提供的日志功能遠(yuǎn)遠(yuǎn)不夠:容器崩潰,驅(qū)逐 POD 實例,節(jié)點崩潰,在這些情況下我們依舊希望訪問日志。因此日志需要獨立存儲,并且生命周期與節(jié)點、容器等等無關(guān)。

該概念被稱為“集群日志”。

#3 集群日志

“集群日志”需要單獨存儲,但是 Kubernetes 并沒有提供日志后端存儲,需要我們自己集成。本文結(jié)合官方「Logging Architecture」文檔,整理與日志有關(guān)內(nèi)容。

寫入標(biāo)準(zhǔn)輸出的日志

使用 kubectl logs 查看日志,添加 –previous 選項查看已崩潰容器的日志。

如果在 POD 實例中具有容器,可以指定容器名查看特定容器日志。

節(jié)點級日志類型應(yīng)用程序日志

由容器應(yīng)用寫入標(biāo)準(zhǔn)輸出與標(biāo)準(zhǔn)錯誤的日志,會被容器引擎重定向。例如在 Docker 中,由日志驅(qū)動處理(在 Kubernetes 中,被配置寫入 JSON 格式的文件中)。

注意,使用 Docker 日志驅(qū)動無法處理多行日志,需要在日志收集工具中進(jìn)行處理。

如果容器重啟,則 kubelet 會保存單個容器及它的日志。若驅(qū)逐 POD 實例,所有對應(yīng)的容器將被驅(qū)逐,包括日志。

另外節(jié)點日志還要考慮輪轉(zhuǎn)問題,防止日志消耗過多磁盤。但是 Kubernetes 當(dāng)前不負(fù)責(zé)日志輪轉(zhuǎn),這個問題應(yīng)該由容器應(yīng)用處理。另外可以可以配置容器環(huán)境處理日志輪轉(zhuǎn),例如使用 Docker 的 –log-opt 選項。

當(dāng)執(zhí)行 kubectl logs 時,由對應(yīng)節(jié)點的 kubelet 響應(yīng),直接讀取日志文件。注意,如果外部系統(tǒng)執(zhí)行輪轉(zhuǎn),日志截斷為多個文件時,則 kubectl logs 只能讀取組后一個文件。

系統(tǒng)組件日志

系統(tǒng)組件也有日志,但是分為兩類:(1)運行在容器內(nèi)的組件;(2)運行在容器外的組件;

運行在容器外的組件,例如 kubelet 及 Docker 等等:如果使用 systemd 管理,則日志寫入 journald 中;如果未使用 systemd 管理,則日志寫入 /var/log 中;
運行在容器內(nèi)的組件,例如 kube-proxy 或 scheduler 等等:使用默認(rèn)日志機(jī)制,將日志寫入 /var/log 中;

同樣,寫入 /var/log 中的日志也需要輪轉(zhuǎn)。

集群級日志的解決方案

由于 Kubernetes 沒有提供集群日志解決方案,有以下集中途徑解決:

 使用節(jié)點級日志代理,運行在每個節(jié)點中
 使用專用容器(Sidecar),收集應(yīng)用程序日志
 從應(yīng)用程序中直接將日志寫入后端日志存儲 

下面我們將簡述各種解決方法

使用節(jié)點日志代理

以 DeamonSet 在每個節(jié)點運行 POD 實例,用于直接讀取日志文件。但是這只適用于將日志寫入標(biāo)準(zhǔn)錯誤與標(biāo)準(zhǔn)輸出的容器。

常用解決方案有 Elasticsaerch+Fluentd 服務(wù)。

使用專用容器(Sidecar)

使用 Sidecar 容器(與應(yīng)用容器處于相同 POD 實例的容器),有兩種方式:(1)Sidecar 容器將應(yīng)用日志“流入”自己的標(biāo)準(zhǔn)輸出;(2)Sidecar 容器運行日志代理,收集應(yīng)用程序日志;

# 流式 Sidecar 容器:
當(dāng) Sidecar 容器使用自身的標(biāo)準(zhǔn)錯誤與標(biāo)準(zhǔn)輸出時,可以利用 kubelet 與每個節(jié)點的日志代理。Sidecar 容器可以讀取文件、套接字、journald,然后將日志寫入自己的標(biāo)準(zhǔn)錯誤、標(biāo)準(zhǔn)輸出中。

這種方法可以從應(yīng)用程序不同部分中分離出不同的日志流,即使有些應(yīng)用程序可能不支持寫入標(biāo)準(zhǔn)輸入、與標(biāo)準(zhǔn)輸出。日志重定向每次只需要處理很小日志,因此不會出現(xiàn)過渡的開銷。另外由于 Sidecar 的標(biāo)準(zhǔn)輸出與標(biāo)準(zhǔn)錯誤與 kubelet 處理,因此可以通過 kubectl logs 查看日志。

雖然 Sidecar 是額外的容器,但是它可以簡單到只運行 tail 命令。Sidecar 是一種涉及模式。

另外節(jié)點級日志代理會自動處理日志,無需進(jìn)一步配置。還可以配置收集代理來根據(jù)“源容器”日志類型進(jìn)行解析。

盡管 CPU 使用降低,但是會增加磁盤使用量。如果你的應(yīng)用程序需要將日志寫入文件,那盡量寫入到標(biāo)準(zhǔn)輸出中,而不是使用 Sidecar 容器處理。

# 帶有日志代理的 Sidecar 容器:
如果節(jié)點級日志代理無法滿足需求,可以運行在 Sidecar 容器中運行日志收集代理。該代理可以經(jīng)過配置,適用于特定應(yīng)用程序。但是該類型的 Sidecar 會消耗更多資源,并且不能使用 kubectl logs 查看日志。

直接暴露日志

最后一種方法是將日志直接寫入后端存儲,這是一種日志存儲方案,但是與 Kubernetes 集群的關(guān)系并不大,這里不再討論。

最后總結(jié)

在 Kubernetes Cluster 中,需要處理的日志分為以下幾種:

 容器外日志:kubelet、Docker
 容器內(nèi)日志:(已寫標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)錯誤)容器應(yīng)用程序,包括集群組件(比如 kube-porxy,etcd 等等)容器內(nèi)日志:(未寫標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)錯誤)容器應(yīng)用應(yīng)用,寫入容器本地 

使用 DaemonSet 運行 POD 實例,在節(jié)點中收集日志。

以上是“Kubernetes 日志有關(guān)知識點有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-16發(fā)表,共計2242字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 安阳市| 丰县| 宁陕县| 宜宾县| 黎平县| 南城县| 朔州市| 兴义市| 深泽县| 中卫市| 繁峙县| 木里| 眉山市| 安远县| 阿尔山市| 尚义县| 云梦县| 新宁县| 苏尼特左旗| 聂荣县| 察哈| 城口县| 临夏县| 奎屯市| 巍山| 宁城县| 天峨县| 永德县| 会东县| 芜湖县| 台安县| 玉屏| 泗洪县| 新营市| 原平市| 西昌市| 木兰县| 阜新| 治多县| 合作市| 遂川县|