本主題說明如何部署適用於 Fluent Bit 的 TKG 延伸 v1.3.1。Fluent Bit 是一個快速輕量型記錄處理器和轉寄站,可讓您從不同的來源收集應用程式資料與記錄,並統一和傳送至多個目的地。部署 Fluent Bit 的 TKG 延伸,以收集 Tanzu Kubernetes 叢集記錄並將其轉送至所選目的地。
延伸必要條件
部署適用於 Fluent Bit 的 TKG 延伸 v1.3.1 之前,請遵循下列需求。
- 佈建叢集。請參閱使用 TKGS v1alpha2 API 佈建 Tanzu Kubernetes 叢集的工作流程。
- 連線至叢集。請參閱以 vCenter Single Sign-On 使用者身分連線至 Tanzu Kubernetes 叢集。
- 下載 TKG 延伸 v1.3.1 服務包到執行 kubectl 的用戶端主機。
- 在目標叢集上安裝 TKG 延伸必要條件。
部署 Fluent Bit 延伸
適用於 Fluent Bit 的 TKG 延伸會在叢集上安裝 Fluent Bit 容器。如需有關此容器的詳細資訊,請參閱
https://fluentbit.io/。
延伸設定為從位於
https://projects.registry.vmware.com/ 的 VMware 公用登錄提取容器。如果使用私人登錄,請變更資料值和延伸組態檔中的端點 URL 以便相符。如需欄位和選項的說明,請參閱
設定 Fluent Bit 延伸。
容器 | 資源類型 | 複本 | 說明 |
---|---|---|---|
Fluent Bit | DaemonSet | 6 | 記錄收集器、彙總工具、轉寄站 |
- 確認您已完成各個延伸必要條件。請參閱延伸必要條件。
- 將目錄變更為 Fluent Bit 延伸。
cd /tkg-extensions-v1.3.1+vmware.1/extensions/logging/fluent-bit
- 建立
tanzu-system-logging
命名空間以及 Fluent Bit 服務帳戶和角色物件。kubectl apply -f namespace-role.yaml
- 決定要用於 Fluent Bit 的記錄目的地。支援的輸出包括 Elasticsearch、HTTP、Kafka、Splunk 和 Syslog。如需詳細資訊,請參閱https://docs.fluentbit.io/manual/pipeline/outputs。
- 透過複製其中一個
<LOG_BACKEND>/fluent-bit-data-values.example.yaml
檔案,為所選記錄目的地建立 Fluent Bit 資料值檔案。每個支援的記錄目的地都有一個範例資料值檔案。此範例會提供該記錄目的地的最低組態。cp elasticsearch/fluent-bit-data-values.yaml.example elasticsearch/fluent-bit-data-values.yaml
cp http/fluent-bit-data-values.yaml.example http/fluent-bit-data-values.yaml
cp kafka/fluent-bit-data-values.yaml.example kafka/fluent-bit-data-values.yaml
cp splunk/fluent-bit-data-values.yaml.example splunk/fluent-bit-data-values.yaml
cp syslog/fluent-bit-data-values.yaml.example syslog/fluent-bit-data-values.yaml
- 填入
<LOG_BACKEND>/fluent-bit-data-values.yaml
以設定 Fluent Bit 延伸。如需欄位和選項的說明,請參閱設定 Fluent Bit 延伸。例如,Fluent Bit Syslog 組態需要下列值:logging: image: repository: projects.registry.vmware.com/tkg # Public registry tkg: instance_name: "<TKG_INSTANCE_NAME>" #mandatory but arbitrary; appears in logs cluster_name: "<CLUSTER_NAME>" #name of the target tkgs cluster fluent_bit: output_plugin: "syslog" syslog: host: "<SYSLOG_HOST>" port: "<SYSLOG_PORT>" mode: "<SYSLOG_MODE>" format: "<SYSLOG_FORMAT>"
Fluent Bit Syslog 的填入資料值檔案可能有以下組態:logging: image: repository: projects.registry.vmware.com/tkg tkg: instance_name: "tkgs-cluster-1" cluster_name: "tkgs-cluster-1" fluent_bit: output_plugin: "syslog" syslog: host: "10.192.175.59" port: "514" mode: "tcp" format: "rfc5424"
- 使用記錄目的地的資料值建立 Fluent Bit 密碼。
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=elasticsearch/fluent-bit-data-values.yaml -n tanzu-system-logging
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=kafka/fluent-bit-data-values.yaml -n tanzu-system-logging
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=splunk/fluent-bit-data-values.yaml -n tanzu-system-logging
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=http/fluent-bit-data-values.yaml -n tanzu-system-logging
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=syslog/fluent-bit-data-values.yaml -n tanzu-system-logging
secret/fluent-bit-data-values
是在tanzu-system-logging
命名空間中建立的。使用下列命令進行驗證:kubectl get secrets -n tanzu-system-logging
- 部署 Fluent Bit 應用程式。
kubectl apply -f fluent-bit-extension.yaml
成功後,您應該會看到
app.kappctrl.k14s.io/fluent-bit created
。 - 檢查 Fluent Bit 應用程式的狀態。
kubectl get app fluent-bit -n tanzu-system-logging
成功後,狀態應從Reconciling
變更為Reconcile succeeded
。如果狀態為Reconcile failed
,請參閱疑難排解 Fluent Bit 部署。 - 檢視有關應用程式的詳細狀態。
kubectl get app fluent-bit -n tanzu-system-logging -o yaml
- 驗證 Fluent Bit DeamonSet。
kubectl get daemonsets -n tanzu-system-logging
成功後,您應該會看到下列內容:NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE fluent-bit 6 6 6 6 6 <none> 105s
疑難排解 Fluent Bit 部署
如果部署或協調失敗,請執行 kubectl get pods -A
以檢視網繭狀態。fluent-bit
網繭的狀態應為 Running
。如果網繭狀態為 ImagePullBackOff
或 ImageCrashLoopBackOff
,則無法提取容器映像。檢查資料值和延伸 YAML 檔案中的登錄 URL,並確保其正確無誤。
檢查容器記錄,其中
name-XXXX
是您在執行
kubectl get pods -A
時可以看到的唯一網繭名稱:
kubectl logs pod/fluent-bit-XXXXX -c fluent-bit -n tanzu-system-logging
更新 Fluent Bit 延伸
更新部署到 Tanzu Kubernetes 叢集的 Fluent Bit 延伸。
- 從密碼取得 Fluent Bit 資料值。
kubectl get secret fluent-bit-data-values -n tanzu-system-logging -o 'go-template={{ index .data "values.yaml" }}' | base64 -d > fluent-bit-data-values.yaml
- 更新
fluent-bit-data-values.yaml
中的 Fluent Bit 資料值。請參閱設定 Fluent Bit 延伸。 - 更新 Fluent Bit 資料值密碼。
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=fluent-bit-data-values.yaml -n tanzu-system-logging -o yaml --dry-run | kubectl replace -f-
將使用上述資料值重新協調 Fluent Bit 延伸。備註: 依預設,kapp-controller 將每 5 分鐘同步一次應用程式。更新應在 5 分鐘內生效。如果您想讓更新立即生效,請變更fluent-bit-extension.yaml
中的syncPeriod
為較小值,然後使用kubectl apply -f fluent-bit-extension.yaml
來套用 Fluent Bit 延伸。 - 檢查該延伸的狀態。
kubectl get app fluent-bit -n tanzu-system-logging
- 檢視詳細狀態和疑難排解。
kubectl get app fluent-bit -n tanzu-system-logging -o yaml
- 視需要進行疑難排解。請參閱疑難排解 Fluent Bit 部署。
刪除 Fluent Bit 延伸
從
Tanzu Kubernetes 叢集刪除 Fluent Bit 延伸。
備註: 按順序完成步驟。請不要在完全刪除 Fluent Bit 應用程式之前,先刪除命名空間、服務帳戶和角色物件。這樣做可能會導致系統錯誤。
- 將目錄變更為 Fluent Bit 延伸。
cd extensions/logging/fluent-bit/
- 刪除 Fluent Bit 應用程式。
kubectl delete app fluent-bit -n tanzu-system-logging
預期結果:
app.kappctrl.k14s.io "fluent-bit" deleted
。 - 確認 Fluent Bit 應用程式是否已刪除。
kubectl get app fluent-bit -n tanzu-system-logging
預期結果:
apps.kappctrl.k14s.io "fluent-bit" not found
。 - 刪除
tanzu-system-logging
命名空間以及 Fluent Bit 延伸服務帳戶和角色物件。kubectl delete -f namespace-role.yaml
升級 Fluent Bit 延伸
如果已部署現有的 Fluent Bit 延伸,可以將其升級至最新版本。
- 匯出 Fluent Bit configmap。
kubectl get configmap fluent-bit -n tanzu-system-logging -o 'go-template={{ index .data "fluent-bit.yaml" }}' > fluent-bit-configmap.yaml
- 刪除現有的 Fluent Bit 部署。請參閱刪除 Fluent Bit 延伸。
- 部署最新的 Fluent Bit 延伸。請參閱部署 Fluent Bit 延伸。
設定 Fluent Bit 延伸
組態值於
extensions/logging/fluent-bit/<LOG_BACKEND>/fluent-bit-data-values.yaml
中設定。
參數 | 說明 | 類型 | 預設值 |
---|---|---|---|
logging.namespace | 將部署 Fluent Bit 的命名空間 | string | tanzu-system-logging |
logging.service_account_name | Fluent Bit 服務帳戶的名稱 | string | fluent-bit |
logging.cluster_role_name | 授與取得、監視和列示權限的叢集角色名稱 | string | fluent-bit-read |
logging.image.name | Fluent Bit 映像的名稱 | string | fluent-bit |
logging.image.tag | Fluent Bit 映像標籤。如果您要升級版本,則可能需要更新此值。 | string | v1.6.9_vmware.1 |
logging.image.repository | 具有 Fluent Bit 映像的存放庫的位置。預設為公用 VMware 登錄。如果您要使用私人存放庫 (例如氣隙環境),請變更此值。 | string | projects.registry.vmware.com/tkg |
logging.image.pullPolicy | Fluent Bit 提取原則 | string | IfNotPresent |
logging.update_strategy | 更新在更新 DaemonSet 時所使用的策略 | string | RollingUpdate |
tkg.cluster_name | Tanzu Kubernetes 叢集的名稱 | string | 空值 (必要參數) |
tkg.instance_name | TKG 執行個體的使用者定義名稱,由一個部署中的主管叢集及所有 Tanzu Kubernetes 叢集共用。可以使用與安裝相關的任何名稱。 | string | 空值 (必要參數)
備註: 此欄位為必填,但內容是任意的。這是顯示在記錄中的名稱。
|
fluent_bit.log_level | 要用於 Fluent Bit 的記錄層級 | string | 資訊 |
fluent_bit.output_plugin | 設定 Fluent Bit 應排清所收集之資訊的後端 | string | 空值 (必要參數) |
fluent_bit.elasticsearch.host | 目標 Elasticsearch 執行個體的 IP 位址或主機名稱 | string | 空值 (output_plugin 為彈性搜尋時的必要參數) |
fluent_bit.elasticsearch.port | 目標 Elasticsearch 執行個體的 TCP 連接埠 | 整數 | 空值 (output_plugin 為彈性搜尋時的必要參數) |
fluent_bit.elasticsearch.buffer_size | 指定用來讀取 Elasticsearch 服務回應的緩衝區大小。若為 False,則設定為無限制 | string | False |
fluent_bit.elasticsearch.tls | 指定適用於 Elasticsearch 之 TLS 的預設設定 | string | 關閉 |
fluent_bit.kafka.broker_service_name | Kafka Broker 的多個清單之一,例如:192.168.1.3:9092 | string | 空值 (output_plugin 為 kafka 時的必要參數) |
fluent_bit.kafka.topic_name | Fluent Bit 用於將訊息傳送給 Kafka 的單一項目或以 (,) 分隔的主題清單 | string | 空值 (output_plugin 為 kafka 時的必要參數) |
fluent_bit.splunk.host | 目標 Splunk 伺服器的 IP 位址或主機名稱 | string | 空值 (output_plugin 為 splunk 時的必要參數) |
fluent_bit.splunk.port | 目標 Splunk 伺服器的 TCP 連接埠 | 整數 | 空值 (output_plugin 為 splunk 時的必要參數) |
fluent_bit.splunk.token | 指定 HTTP 事件收集器介面的驗證 Token | string | 空值 (output_plugin 為 splunk 時的必要參數) |
fluent_bit.http.host | 目標 HTTP 伺服器的 IP 位址或主機名稱 | string | 空值 (output_plugin 為 http 時的必要參數) |
fluent_bit.http.port | 目標 HTTP 伺服器的 TCP 連接埠 | 整數 | 空值 (output_plugin 為 http 時的必要參數) |
fluent_bit.http.mode | 指定目標 Web 服務器的 HTTP URI | string | 空值 (output_plugin 為 http 時的必要參數) |
fluent_bit.http.header_key_value | HTTP 標頭索引鍵/值配對。可以設定多個標頭 | string | 空值 (output_plugin 為 http 時的必要參數) |
fluent_bit.http.format | 指定要用於 HTTP 要求本文的資料格式 | string | 空值 (output_plugin 為 http 時的必要參數) |
fluent_bit.syslog.host | 遠端 Syslog 伺服器的網域或 IP 位址 | string | 空值 (output_plugin 為 syslog 時的必要參數) |
fluent_bit.syslog.port | 遠端 Syslog 伺服器的 TCP 或 UDP 連接埠 | 整數 | 空值 (output_plugin 為 syslog 時的必要參數) |
fluent_bit.syslog.mode | 從 TCP、UDP 和 TLS 指定傳輸類型 | string | 空值 (output_plugin 為 syslog 時的必要參數) |
fluent_bit.syslog.format | 指定要用於 HTTP 要求本文的資料格式 | string | 空值 (output_plugin 為 syslog 時的必要參數) |
host_path.volume_1 | 從主機節點檔案系統到網繭的目錄路徑 (針對磁碟區 1) | string | /var/log |
host_path.volume_2 | 從主機節點檔案系統到網繭的目錄路徑 (針對磁碟區 2) | string | /var/lib/docker/containers |
host_path.volume_3 | 從主機節點檔案系統到網繭的目錄路徑 (針對磁碟區 3) | string | /run/log |
systemd.path | Systemd 日誌目錄的路徑 | string | /var/log/journal |