我正在尝试在 EKS + Fargate 上为 Kuberentes 设置 Fluent Bit。我能够将日志全部发送到 Cloudwatch 上的一个通用日志组,但现在当我添加 Fluent-bit.conf 时: |到 data: 字段并尝试将更新应用到我的集群,我收到此错误:
for: "fluentbit-config.yaml": admission webhook "0500-amazon-eks-fargate-configmaps-admission.amazonaws.com" denied the request: fluent-bit.conf is not valid. Please only provide output.conf, filters.conf or parsers.conf in the logging configmap
对我来说最突出的是错误消息要求我仅提供输出、过滤器或解析器配置。
它与我在网上找到的其他示例相匹配,但我正在更新的集群上似乎没有 Fluent-bit.conf 文件或其他文件。我遵循的教程没有提到安装文件,所以我不知道为什么会收到此错误。
我的 Fluentbit-config.yaml 文件如下所示
kind: Namespace
apiVersion: v1
metadata:
name: aws-observability
labels:
aws-observability: enabled
---
kind: ConfigMap
apiVersion: v1
metadata:
name: aws-logging
namespace: aws-observability
labels:
k8s-app: fluent-bit
data:
fluent-bit.conf: |
@INCLUDE input-kubernetes.conf
input-kubernetes.conf: |
[INPUT]
Name tail
Parser docker
Tag logger
Path /var/log/containers/*logger-server*.log
output.conf: |
[OUTPUT]
Name cloudwatch_logs
Match logger
region us-east-1
log_group_name fluent-bit-cloudwatch
log_stream_prefix from-fluent-bit-
auto_create_group On
最佳答案
根据 docs (在该页面的最底部,是的,我们正在改进它们,对当前状态不满意)其中有几个部分在 Fargate 日志记录的 EKS 上下文中是不允许的,更多具体来说,什么可以进入 ConfigMap。您想要的是类似于以下内容的内容(注意:这是来 self 正在使用的实际部署,稍作修改):
kind: ConfigMap
apiVersion: v1
metadata:
name: aws-logging
namespace: aws-observability
data:
output.conf: |
[OUTPUT]
Name cloudwatch_logs
Match *
region eu-west-1
log_group_name something-fluentbit
log_stream_prefix fargate-
auto_create_group On
[OUTPUT]
Name es
Match *
Host blahblahblah.eu-west-1.es.amazonaws.com
Port 443
Index something
Type something_type
AWS_Auth On
AWS_Region eu-west-1
tls On
使用此配置,您可以将日志流式传输到 CW 和 AES,因此如果不需要,请随意删除第二个 OUTPUT 部分。但是,您会注意到那里不能有其他部分,例如 input-kubernetes.conf
。
关于amazon-web-services - 为什么 EKS 说我的 Fluent-bit.conf 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68086502/