下面是使用 Fluent Bit 进行日志收集,仅采集指定命名空间的 Pod 日志的详细步骤:
在 Kubernetes 集群中安装 Fluent Bit:
- 可以使用 Helm 安装
fluent-bit
Chart。 - 也可以使用 YAML 文件直接创建
fluent-bit
的 Deployment 和相关资源。
- 可以使用 Helm 安装
创建一个 ConfigMap,配置 Fluent Bit 的输入和输出插件以及过滤规则。示例 YAML 文件如下:
apiVersion: v1 kind: ConfigMap metadata: name: fluentbit-config namespace: <YOUR_NAMESPACE> data: fluent-bit.conf: | [SERVICE] Flush 1 Daemon off Log_Level info @INCLUDE input-kubernetes.conf @INCLUDE filter-kubernetes.conf @INCLUDE output-elasticsearch.conf
创建三个额外的 ConfigMap,分别用于定义 Fluent Bit 的输入、过滤器和输出插件的配置。示例文件如下:
- input-kubernetes.conf: “`conf [INPUT] Name tail Tag kube.* Path /var/log/containers/*.log Parser docker,crio,json DB /var/log/flb_kube.db Mem_Buf_Limit 5MB
[FILTER]
Name kubernetes Match kube.* Kube_URL https://kubernetes.default.svc:443/ Merge_Log OnFirstLineKey log_processed K8S-Logging.Parser On # Exclude some namespaces from being processed by the filter # Filter out the logs from "kube-system" and "default" namespaces K8S-Logging.Exclude On K8S-Logging.Exclude_Namespaces kube-system,default # Enable Kubernetes Audit Logs support, this requires a patched version # of Fluent Bit. Check the official repository for more details. ##K8S-Audit.Parser On
- filter-kubernetes.conf: ```conf [FILTER] Name kubernetes Match kube.* Kube_URL https://kubernetes.default.svc:443/ Merge_Log OnFirstLineKey log_processed K8S-Logging.Parser On # Exclude some namespaces from being processed by the filter # Filter out the logs from "kube-system" and "default" namespaces K8S-Logging.Exclude On K8S-Logging.Exclude_Namespaces kube-system,default # Enable Kubernetes Audit Logs support, this requires a patched version # of Fluent Bit. Check the official repository for more details. ##K8S-Audit.Parser On
- output-elasticsearch.conf:
“`conf
[OUTPUT]
Name es
Match *
Host
Port Index kubernetes_cluster
HTTP_User elastic (optional) HTTP_Passwd changeme (optional)
Retry_Limit False
TLS Off #(optional) “`
在你的目标命名空间中创建一个 DaemonSet,用于运行 Fluent Bit 的实例。示例 YAML 文件如下:
apiVersion: apps/v1 kind: DaemonSet metadata: name: fluentbit-daemonset namespace: <YOUR_NAMESPACE> spec: selector: matchLabels: app: fluent-bit template: metadata: labels: app: fluent-bit spec: containers: - name: fluent-bit image: fluent/fluent-bit:<VERSION> resources: limits: memory: 200Mi requests: cpu: 100m memory: 100Mi volumeMounts: - name: config-volume mountPath: /fluent-bit/etc/ ports: - containerPort: 2020 volumes: - name: config-volume configMap: name: fluentbit-config
替换示例 YAML 文件中的
<YOUR_NAMESPACE>
、<ELASTICSEARCH_HOST>
和<ELASTICSEARCH_PORT>
分别为目标命名空间名称、Elasticsearch 主机和端口。应用以上 YAML 文件,创建 ConfigMap 和 DaemonSet:
kubectl apply -f <configmap_file.yaml> kubectl apply -f <daemonset_file.yaml>
这样就配置了 Fluent Bit 以仅采集指定命名空间的 Pod 日志。你可以根据实际需求进行进一步的调整和定制化,例如添加认证或更改输出插件等。请确保适当测试和验证配置,以确保日志收集正常工作并满足预期要求。
内容由零声教学AI助手提供,问题来源于学员提问