AWS EKS 1.21 Fargate环境Fluentd DaemonSet完全无法运行问题咨询
问题根因
你遇到的问题是EKS Fargate环境的特性限制导致的,核心原因有两个:
- DaemonSet不兼容纯Fargate集群
DaemonSet的设计逻辑是在集群每个工作节点上部署一个Pod副本,而EKS Fargate是Serverless运行环境,用户侧看不到也无法操作底层承载Pod的计算节点,集群不存在可供DaemonSet调度的可见工作节点,因此DaemonSet的期望副本数直接为0,不会生成任何Pod实例。你提供的kubectl get ds输出里,aws-node、kube-proxy等集群默认DaemonSet的副本数也全部为0,这就是纯Fargate集群的正常表现。 - Fargate不支持HostPath挂载
你的Fluentd配置里大量使用了HostPath卷挂载宿主机的日志目录,而Fargate环境不允许Pod访问宿主机文件系统,就算你改用Deployment等其他 workload 类型部署,也会因为HostPath不支持而启动失败。
可行解决方案
在EKS Fargate环境下收集日志,推荐两种方案:
- 方案1:使用EKS Fargate原生日志路由功能,直接在Fargate Profile配置中开启日志上报,无需自行部署采集组件,即可自动将所有Fargate Pod的标准输出、标准错误日志发送到CloudWatch Logs,是成本最低、维护量最小的方案。
- 方案2:如果需要自定义日志采集逻辑(比如采集容器内非标准输出的日志文件),可以给业务Pod注入Fluent Bit/Fluentd sidecar容器,将业务容器的日志目录通过emptyDir共享给sidecar,由sidecar负责将日志发送到CloudWatch或其他存储后端。
内容的提问来源于stack exchange,提问作者vinod827
相关产品推荐
相关产品推荐

