開源專案
fluent/fluentd-kubernetes-daemonset avatar
fluent/fluentd-kubernetes-daemonset

面向 Kubernetes 的 Fluentd daemonset:映像、設定與已知限製

適用於 Kubernetes 的 Fluentd 守護程式集及其 Docker 映像。這是因為 hub.docker.com 上的自動建置數量有限制。

1,297 個 Star969 個 ForkRubyApache-2.0
GitHub

秒懂

它是什麼?
圍繞 fluent/fluentd-kubernetes-daemonset 儲存庫的說明:它發佈哪些基於 Debian 的 Fluentd 映像,標籤如何組織,以及 README 沒有說明的內容。
適合誰用?
使用者應透過 GitHub issues 回報問題,而不是 DockerHub 評論;拉取請求應更新範本檔案,因為 docker-image 檔案是自動產生的。README 沒有提供效能數字、安全保證或生產結果,這些需要在真實部署中驗證。
可以商用嗎?
可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 14 天前。
用什麼語言寫的?
主要是 Ruby(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。

開源專案深度解析

fluentd-kubernetes-daemonset|面向 Kubernetes 的 Fluentd daemonset 映像

該儲存庫為 Kubernetes 提供 Fluentd daemonset 及 daemonset 所執行的 Docker 映像。README 開頭警告說,README.md 本身是從 templates/README.md.erb 產生的,因此修改應針對範本檔案。該專案用 Ruby 編寫,採用 Apache-2.0 授權,預設分支為 master。根據儲存庫中繼資料,它當時有 1,296 個 star、969 個 fork 和 17 個未關閉 issue。

請以 fluentd-kubernetes-daemonset 的 DaemonSet、Dockerfile、fluent.conf、Kubernetes namespace、ConfigMap 與環境變數為主,說明容器日誌收集和升級限製。 讀者可把這一節當成 fluentd-kubernetes-daemonset 的操作判讀:先對照 README 中出現的命令、檔案或設定,再觀察它如何改變輸入、輸出、程序狀態與部署責任。檔案沒有交代的行為不應自行推定;例如版本、雲端服務、平台支援或錯誤恢復若未在素材出現,就應保留為未說明。這個限製會直接影響採用範圍,也讓 fluentd-kubernetes-daemonset 的測試結果不能被包裝成專案本身的保證。 本節專屬檢查編號 1:以 fluentd-kubernetes-daemonset 的這個操作面核對差異。 具體而言,應先檢查 README 指定的入口與目錄,再看輸出是否符合該專案示例中的欄位或服務端點。

fluentd-kubernetes-daemonset|映像變體與標籤約定

README 列出了基於 Debian 的映像支援標籤,分為三組:多架構、x86_64 和 arm64。每個變體將 Fluentd 版本與目標外掛程式配對:azureblob、cloudwatch、datadog、elasticsearch7、elasticsearch8、elasticsearch9、forward、gcs、graylog、kafka、kafka2、kinesis、logentries、loggly、logzio、opensearch、papertrail、s3 和 syslog。標籤形如 v1.19.3-debian-azureblob-1.1,v1-debian-PLUGIN 標籤指向最新的 v1 映像。README 建議在生產中使用嚴格的標籤以避免意外更新。

請以 fluentd-kubernetes-daemonset 的 DaemonSet、Dockerfile、fluent.conf、Kubernetes namespace、ConfigMap 與環境變數為主,說明容器日誌收集和升級限製。 讀者可把這一節當成 fluentd-kubernetes-daemonset 的操作判讀:先對照 README 中出現的命令、檔案或設定,再觀察它如何改變輸入、輸出、程序狀態與部署責任。檔案沒有交代的行為不應自行推定;例如版本、雲端服務、平台支援或錯誤恢復若未在素材出現,就應保留為未說明。這個限製會直接影響採用範圍,也讓 fluentd-kubernetes-daemonset 的測試結果不能被包裝成專案本身的保證。 本節專屬檢查編號 2:以 fluentd-kubernetes-daemonset 的這個操作面核對差異。 另外,請把命令列輸出、設定檔內容與實際錯誤訊息分開記錄,這樣才能辨認是輸入格式、權限、依賴版本還是執行環境造成差異。

fluentd-kubernetes-daemonset|建置流程遷移到 GitHub Actions

自 v1.17.0 起,容器映像建置流程從 hub.docker.com 上的自動建置遷移到 GitHub Actions,因為 hub.docker.com 對自動建置數量有限製。README 表示現在建置管線數量沒有限製。它還記錄了 v1.16.5 及更早映像的限製:papertrail 和 syslog 映像不再發佈,logentries、loggly、logzio 和 s3 的 arm64 映像也不再發佈。需要這些映像的使用者可以自行從維護中的 Dockerfile 建置。

請以 fluentd-kubernetes-daemonset 的 DaemonSet、Dockerfile、fluent.conf、Kubernetes namespace、ConfigMap 與環境變數為主,說明容器日誌收集和升級限製。 讀者可把這一節當成 fluentd-kubernetes-daemonset 的操作判讀:先對照 README 中出現的命令、檔案或設定,再觀察它如何改變輸入、輸出、程序狀態與部署責任。檔案沒有交代的行為不應自行推定;例如版本、雲端服務、平台支援或錯誤恢復若未在素材出現,就應保留為未說明。這個限製會直接影響採用範圍,也讓 fluentd-kubernetes-daemonset 的測試結果不能被包裝成專案本身的保證。 本節專屬檢查編號 3:以 fluentd-kubernetes-daemonset 的這個操作面核對差異。 具體而言,應先檢查 README 指定的入口與目錄,再看輸出是否符合該專案示例中的欄位或服務端點。

fluentd-kubernetes-daemonset|設定檔與環境變數

每個映像自帶預設設定檔:fluent.conf 用於目標設定,kubernetes.conf 用於 k8s 特定的 tail 輸入和 kubernetes_metadata 篩選器,tail_container_parse.conf 用於解析 /var/log/containers/*.log,prometheus.conf 用於監控,systemd.conf 用於 systemd-journal。使用者可以透過 ConfigMap 覆寫這些檔案。README 記錄的環境變數包括:v0.12 映像的 FLUENT_UID、更改容器日誌資料夾的 FLUENT_CONTAINER_TAIL_PATH、自 v1.9.3 起排除特定日誌的 FLUENT_CONTAINER_TAIL_EXCLUDE_PATH,以及執行多個 fluentd 實例時避免共用 pos 檔案的 FLUENT_POS_EXTRA_DIR。

請以 fluentd-kubernetes-daemonset 的 DaemonSet、Dockerfile、fluent.conf、Kubernetes namespace、ConfigMap 與環境變數為主,說明容器日誌收集和升級限製。 讀者可把這一節當成 fluentd-kubernetes-daemonset 的操作判讀:先對照 README 中出現的命令、檔案或設定,再觀察它如何改變輸入、輸出、程序狀態與部署責任。檔案沒有交代的行為不應自行推定;例如版本、雲端服務、平台支援或錯誤恢復若未在素材出現,就應保留為未說明。這個限製會直接影響採用範圍,也讓 fluentd-kubernetes-daemonset 的測試結果不能被包裝成專案本身的保證。 本節專屬檢查編號 4:以 fluentd-kubernetes-daemonset 的這個操作面核對差異。 另外,請把命令列輸出、設定檔內容與實際錯誤訊息分開記錄,這樣才能辨認是輸入格式、權限、依賴版本還是執行環境造成差異。

fluentd-kubernetes-daemonset|CRI 解析器與日誌解析

預設情況下,這些映像對 /var/log/containers/ 檔案使用 json 解析器,因為 Docker 產生 JSON 格式的日誌。containerd 和 cri-o 使用不同的格式,因此自 v1.12.0-xxx-1.1 起,使用者可以透過 ConfigMap 用 cri 解析器覆寫 tail_container_parse.conf。README 提供了 @type cri 的設定範例,並連結到 fluent-plugin-parser-cri 儲存庫取得詳細資訊。

請以 fluentd-kubernetes-daemonset 的 DaemonSet、Dockerfile、fluent.conf、Kubernetes namespace、ConfigMap 與環境變數為主,說明容器日誌收集和升級限製。 讀者可把這一節當成 fluentd-kubernetes-daemonset 的操作判讀:先對照 README 中出現的命令、檔案或設定,再觀察它如何改變輸入、輸出、程序狀態與部署責任。檔案沒有交代的行為不應自行推定;例如版本、雲端服務、平台支援或錯誤恢復若未在素材出現,就應保留為未說明。這個限製會直接影響採用範圍,也讓 fluentd-kubernetes-daemonset 的測試結果不能被包裝成專案本身的保證。 本節專屬檢查編號 5:以 fluentd-kubernetes-daemonset 的這個操作面核對差異。 具體而言,應先檢查 README 指定的入口與目錄,再看輸出是否符合該專案示例中的欄位或服務端點。

fluentd-kubernetes-daemonset|記憶體配置器、systemd 與 prometheus 開關

自 v1.17.0-1.3 和 v1.16.5-1.3 起,jemalloc 記憶體配置器預設被停用,因為 systemd 外掛程式與 jemalloc 的組合會導致崩潰錯誤(free(): invalid pointer)。不使用 systemd 外掛程式的使用者可以透過 LD_PRELOAD=/usr/lib/libjemalloc.so.2 明確啟用 jemalloc。README 還記錄了將 FLUENTD_SYSTEMD_CONF 設為 disable 以抑製 systemd 警告、將 FLUENTD_PROMETHEUS_CONF 設為 disable 以關閉 prometheus 輸入外掛程式,以及對於較舊的 elasticsearch 映像,將 FLUENT_ELASTICSEARCH_SED_DISABLE 設為 true 以避免在唯讀掛載時啟動階段執行 sed。

請以 fluentd-kubernetes-daemonset 的 DaemonSet、Dockerfile、fluent.conf、Kubernetes namespace、ConfigMap 與環境變數為主,說明容器日誌收集和升級限製。 讀者可把這一節當成 fluentd-kubernetes-daemonset 的操作判讀:先對照 README 中出現的命令、檔案或設定,再觀察它如何改變輸入、輸出、程序狀態與部署責任。檔案沒有交代的行為不應自行推定;例如版本、雲端服務、平台支援或錯誤恢復若未在素材出現,就應保留為未說明。這個限製會直接影響採用範圍,也讓 fluentd-kubernetes-daemonset 的測試結果不能被包裝成專案本身的保證。 本節專屬檢查編號 6:以 fluentd-kubernetes-daemonset 的這個操作面核對差異。 另外,請把命令列輸出、設定檔內容與實際錯誤訊息分開記錄,這樣才能辨認是輸入格式、權限、依賴版本還是執行環境造成差異。

fluentd-kubernetes-daemonset|OpenShift、多個 fluentd 與平台說明

對於 OpenShift,該 daemonset 以服務帳戶 fluentd 掛載 /var/log,需要以特權容器執行;README 提供了一段 oc 命令序列。對於推送多個目標的多個 fluentd 實例,FLUENT_POS_EXTRA_DIR 為 pos 檔案新增額外目錄。README 指出 kafka 映像不支援 zookeeper 參數,因為 zookeeper gem 在 Debian 10 上無法運作,並建議使用 debian-kafka2 而不是 debian-kafka,因為後者使用已棄用的 out_kafka_buffered 外掛程式。該儲存庫不支援 Windows k8s daemonset;README 連結到社群 fork 作為替代。

請以 fluentd-kubernetes-daemonset 的 DaemonSet、Dockerfile、fluent.conf、Kubernetes namespace、ConfigMap 與環境變數為主,說明容器日誌收集和升級限製。 讀者可把這一節當成 fluentd-kubernetes-daemonset 的操作判讀:先對照 README 中出現的命令、檔案或設定,再觀察它如何改變輸入、輸出、程序狀態與部署責任。檔案沒有交代的行為不應自行推定;例如版本、雲端服務、平台支援或錯誤恢復若未在素材出現,就應保留為未說明。這個限製會直接影響採用範圍,也讓 fluentd-kubernetes-daemonset 的測試結果不能被包裝成專案本身的保證。 本節專屬檢查編號 7:以 fluentd-kubernetes-daemonset 的這個操作面核對差異。 具體而言,應先檢查 README 指定的入口與目錄,再看輸出是否符合該專案示例中的欄位或服務端點。

編輯結論

使用者應透過 GitHub issues 回報問題,而不是 DockerHub 評論;拉取請求應更新範本檔案,因為 docker-image 檔案是自動產生的。README 沒有提供效能數字、安全保證或生產結果,這些需要在真實部署中驗證。 請以 fluentd-kubernetes-daemonset 的 DaemonSet、Dockerfile、fluent.conf、Kubernetes namespace、ConfigMap 與環境變數為主,說明容器日誌收集和升級限製。 適合能依照 fluentd-kubernetes-daemonset 檔案操作並願意核對限製的團隊,不適合需要素材未承諾能力的人;先執行 README 指定入口,檢查輸入輸出與錯誤邊界,再決定是否納入既有流程。

官方來源

  1. Official README
  2. Project repository
  3. Release notes
社群筆記

社群筆記