本主题介绍了如何将 Fluent Bit 部署到 Tanzu Kubernetes Grid 中的独立管理集群或工作负载集群。
Fluent Bit 是一种轻量级日志处理器和转发器。此 Tanzu Kubernetes Grid 版本中提供的 Fluent Bit 实施允许您从 vSphere 8、Amazon Web Services (AWS) 和 Azure 上运行的集群中收集日志。然后,您可以将其转发到日志存储提供程序,例如 Elastic Search、Kafka、Splunk 或 HTTP 端点。
您可以在要从中收集日志的任何独立管理集群或工作负载集群上部署 Fluent Bit。首先,在要从中收集日志的集群上配置输出插件,具体取决于您使用的端点。然后,在集群上部署 Fluent Bit。
kubectl
,如安装 Tanzu CLI 和 Kubernetes CLI 以与独立管理集群配合使用中所述。注意您必须在要从中收集日志的每个集群上部署 Fluent Bit。
要准备集群,请执行以下操作:
获取要在其中部署 Fluent Bit 的集群的管理员凭据。例如:
tanzu cluster kubeconfig get my-cluster --admin
将 kubectl 的上下文设置为集群。例如:
kubectl config use-context my-cluster-admin@my-cluster
请按照以下过程在集群上部署 Fluent Bit:
如果集群没有已安装 Fluent Bit 软件包的软件包存储库(如 tanzu-standard
存储库),请安装一个:
tanzu package repository add PACKAGE-REPO-NAME --url PACKAGE-REPO-ENDPOINT --namespace tkg-system
其中:
PACKAGE-REPO-NAME
是软件包存储库的名称,如 tanzu-standard
或使用 ADDITIONAL_IMAGE_REGISTRY
变量配置的专用映像注册表的名称。PACKAGE-REPO-ENDPOINT
是软件包存储库的 URL。
tanzu-standard
URL 为 projects.registry.vmware.com/tkg/packages/standard/repo:v2023.10.16
。要从 Tanzu CLI 获取此值,请参见列出软件包存储库,或在 Tanzu Mission Control 中查看集群 (Cluster) 窗格中的附加模块 (Addons) > 存储库 (Repositories) 列表。如果尚未执行此操作,请在集群中安装证书管理器。有关说明,请参见安装证书管理器以进行证书管理。
确认 Fluent Bit 软件包在您的集群中可用:
tanzu package available list -A
检索可用软件包的版本:
tanzu package available list fluent-bit.tanzu.vmware.com -A
为 Fluent Bit 软件包准备配置文件:
检索软件包的默认配置:
tanzu package available get fluent-bit.tanzu.vmware.com/PACKAGE-VERSION --default-values-file-output FILE-PATH
其中,PACKAGE-VERSION
是要安装的 Fluent Bit 软件包的版本,FILE-PATH
是要将配置文件保存到的位置,例如,fluent-bit-data-values.yaml
。
根据要配置的日志管理后端,将一个或多个 [Output]
配置添加到 fluent-bit-data-values.yaml
文件中的 fluent_bit.config.outputs
键。
查看并根据需要修改其他配置参数。有关可在 fluent-bit-data-values.yaml
中设置的配置参数的完整列表链接,请参见下面的 Fluent Bit 软件包配置参数。
准备 fluent-bit-data-values.yaml
文件后,移除文件中的所有备注:
yq -i eval '... comments=""' fluent-bit-data-values.yaml
运行 tanzu package install
以部署软件包:
tanzu package install fluent-bit \
--package fluent-bit.tanzu.vmware.com \
--version AVAILABLE-PACKAGE-VERSION \
--values-file fluent-bit-data-values.yaml \
--namespace TARGET-NAMESPACE
其中:
TARGET-NAMESPACE
是要在其中安装 Fluent Bit 软件包的命名空间。例如,my-packages
命名空间。
--namespace
标记,Tanzu CLI 将使用 default
命名空间。Fluent Bit Pod 和与 Fluent Bit 组件关联的任何其他资源都是在您于 fluent-bit-data-values.yaml
中提供的名称空间中创建的;请勿将 Fluent Bit 软件包安装到此命名空间中。kubectl create namespace my-packages
。AVAILABLE-PACKAGE-VERSION
是通过运行上面的 tanzu package available
检索到的版本。
例如:
tanzu package install fluent-bit --package fluent-bit.tanzu.vmware.com --namespace my-packages --version 2.1.2+vmware.1-tkg.1
下表列出了 Fluent Bit 软件包的配置参数,并介绍了其默认值。您可以在上面的 Deploy Fluent Bit on a Cluster 中创建的 fluent-bit-data-values.yml
文件中设置以下配置值。
参数 | 描述 | 类型 | 默认 |
---|---|---|---|
namespace |
将部署 Fluent Bit 的命名空间。 | String | tanzu-system-logging |
fluent_bit.config.outputs |
有关 Fluent Bit 输出的配置信息,请参见 Fluent Bit 文档。 | 多行 YAML | Standard output |
fluent_bit.config.parsers |
有关 Fluent Bit 分析程序的配置信息,请参见 Fluent Bit 文档。 | 多行 YAML | JSON parser |
fluent_bit.config.plugins |
Fluent Bit 插件配置的内容。 | String | <nil> |
fluent_bit.config.service |
有关 Fluent Bit 服务的配置信息,请参见 Fluent Bit 文档。 | 多行 YAML | 默认 Fluent Bit 服务配置。 |
fluent_bit.config.streams |
Fluent Bit 流文件的内容。 | String | <nil> |
fluent_bit.config.filters |
有关 Fluent Bit 筛选器的配置信息,请参见 Fluent Bit 文档。 | 多行 YAML | 默认 Kubernetes 筛选器。 |
fluent_bit.config.inputs |
有关 Fluent Bit 输入的配置信息,请参见 Fluent Bit 文档。 | String | 使用 tail 插件载入 Kubernetes 容器日志,并从 Kubelet 载入 systemd 日志。 |
fluent_bit.daemonset.resources |
有关 Fluent Bit 容器资源要求的配置信息,请参见 Fluent Bit 文档。 | 多行 YAML | <nil> |
fluent_bit.daemonset.podAnnotations |
Fluent Bit 部署 Pod 注释。 | 列表 | <nil> |
fluent_bit.daemonset.podLabels |
Fluent Bit 部署 Pod 标签。 | 列表 | <nil> |
部署 Fluent Bit 后,可以验证部署是否成功:
确认已安装 fluent-bit 软件包。例如:
tanzu package installed list -A
fluent-bit
软件包和 fluent-bit
应用安装在运行 tanzu package install
命令时指定的命名空间中。
确认已在 AVAILABLE-PACKAGE-NAMESPACE
中成功协调 fluent-bit
应用:
kubectl get apps -A
如果状态不是 Reconcile succeeded
,请查看 fluent-bit
应用的完整状态详细信息。查看完整状态可帮助您解决问题:
kubectl get app fluent-bit --namespace AVAILABLE-PACKAGE-NAMESPACE -o yaml
其中,AVAILABLE-PACKAGE-NAMESPACE
是安装软件包的命名空间。
通过列出集群中正在运行的所有 Pod,确认新服务正在运行。
kubectl get pods -A
在 tanzu-system-logging
命名空间中,您应该会看到在 Pod 中运行的 fluent-bit
服务:
NAMESPACE NAME READY STATUS RESTARTS AGE
[...]
tanzu-system-logging fluent-bit-zd2tn 1/1 Running 0 6m23s
[...]
Fluent Bit Pod 和与 Fluent Bit 组件关联的任何其他资源都是在您于 fluent-bit-data-values.yaml
文件中提供的名称空间中创建的。如果使用的是默认命名空间,则会在 tanzu-system-logging
命名空间中创建这些 Pod 和资源。
要在部署后更改 Fluent Bit 软件包的配置,请更新已部署的 Fluent Bit 软件包:
更新 fluent-bit-data-values.yaml
文件中的 Fluent Bit 配置。
更新安装的软件包:
tanzu package installed update fluent-bit \
--version 2.1.2+vmware.1-tkg.1 \
--values-file fluent-bit-data-values.yaml \
--namespace my-packages
预期输出:
| Updating package 'fluent-bit'
- Getting package install for 'fluent-bit'
| Updating secret 'fluent-bit-my-packages-values'
| Updating package install for 'fluent-bit'
Updated package install 'fluent-bit' in namespace 'my-packages'
使用新值或者您添加的值协调 Fluent Bit 软件包。kapp-controller
应用更改可能需要长达五分钟的时间。
有关更新的信息,请参见更新软件包。
要移除集群上的 Fluent Bit 软件包,请运行:
tanzu package installed delete fluent-bit --namespace my-packages
有关删除的信息,请参见删除软件包。