k8s容器環境多個Pod寫日誌永久儲存到物理磁碟,日誌名稱重複問題?

時間 2021-05-30 20:47:10

1樓:

我是這麼做得。

在集群外部有機器開 NFS,pod 中使用volume 掛載,pod 中的日誌檔案可以寫到外部的 NFS 中。當然要包括 HOSTNAME。

可以實現你的需求,但,從目錄結構上講 ,有一節不必要的 HOSTNAME,雖然不影響 grep。

如圖太多,一屏顯示不全

2樓:吳波

對於容器日誌,業界的普遍做法是統一採集,集中儲存。直接儲存在容器所在宿主機的本地磁碟會有諸多問題,使用起來也不太方便。比如,日誌查詢分析需要登入到相應的宿主機,耗時耗力(隨著容器或 pod 數量的增加,這種問題會愈發突出)。

對於你的場景,推薦以 DaemonSet 或 Sidecar 模式部署日誌採集 agent,然後對日誌資料進行統一儲存。

面向容器日誌的技術實踐 - 介紹了容器日誌採集、分析、視覺化的常用方法和基本原理。

全面提公升,阿里雲Docker/Kubernetes(K8S) 日誌解決方案與選型對比 - 全面比較了 k8s 容器日誌的常用採集方案。

Kubernetes日誌採集Sidecar模式介紹 - 介紹了阿里雲日誌服務目前提供的 k8s 容器日誌採集方案,包括 DaemonSet方式、Sidecar方式。

3樓:何軍輝

推薦將日誌輸出到STDOUT,這樣使用Docker log 很容易進行日誌分析

具體的配置是這個 Kubernetes Logging with Fluentd

Flexvolume 是Kubernetes的儲存驅動,跟日誌關係不大

4樓:

可以用statefulset+storageclass實現

(1)另外也可以繞一下:

1. 使用乙個能持久化儲存的公用目錄,比方說hostpath:/data/logs

2. 將這個目錄掛載到所有pod的/data/logs路徑

3. 在pod的/data/logs建立乙個不可能重名的資料夾,比如/data/logs/pod-name

4. 將log目錄軟鏈結到pod裡面的/data/logs/pod-name目錄

(2)建議將日誌持久化放到elasticsearch裡面去,集中化管理,還能結合告警、搜尋、統計等,解決方案也挺多

1. 將srv與日誌採集agent繫結在乙個pod裡面採集srv日誌

2. 將srv的log用emptyDir暴露在宿主機上,自動發現日誌檔案

3. srv直接將log打到kafka等訊息佇列裡面中轉

4. srv打syslog然後採集

Flexvolume看介紹似乎讓使用者能夠支援一些kubernetes不支援的卷型別

K8S構建redis集群後,k8s外部的服務如何訪問redis集群?

Joey 集群內部可以直接訪問,如果需要集群外機器訪問,可以在部署rediscluster的集群內部,再部署乙個rediscommander作為訪問入口。 無名 服務埠開放出來就好了吧?你是哨兵集群還是主從集群?你開了幾個集群埠就要幾個服務埠 不過,Redis這樣的模組用容器好嗎?如果你們確實用了,...

如何部署Prometheus監控K8S?

上面有答案回答的很詳細了,相信按這些步驟肯定能監控起來。現在也在不斷推出新的正規化,類似operator這種,一些紛繁複雜的部署 對接 配置動作也都隱藏了,自動化程度越來越高。個人感覺比zabbix等傳統方案,在體驗 能力方面領先太多,且差距會逐步拉大。在 Kubernetes 中使用 Promet...

docker Swarm與k8s改如何選擇?

noopsphere 無論跑得多慢,你都會最終跑到k8s裡面去。如果是個人專案的話,swarm traefik是可以的,需要的話在加乙個portainer或者swarmit也能玩一會。但是就容器編排而言,k8s目前來說是終點。 雖然我只是乙隻洋 這倆個都可以選擇,前提是看你公司的環境!公司的伺服器體...