You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EKS Fargate Pod挂载emptyDir共享目录下access文件夹丢失问题

问题原因
  1. emptyDir挂载覆盖镜像原有目录:你在Deployment中把emptyDir类型的卷直接挂载到了业务容器的/logs根路径,挂载操作会完全覆盖镜像中预先创建的/logs/boot、/logs/access目录,镜像中预建的目录不会保留。
  2. 业务进程仅自动创建boot目录:你观察到/logs/boot依然存在,是因为业务启动脚本/erctl进程运行时会自动检查并创建/logs/boot目录用于写入启动日志,但不会创建/logs/access目录,最终只保留了boot目录。
  3. 本地测试正常的原因:本地Docker测试时你没有挂载emptyDir到/logs路径,直接使用的是镜像内预创建的目录结构,因此不会出现目录丢失问题。
  4. Fluent Bit额外报错原因:日志中169.254.169.254连接超时是因为Pod关联的IAM身份没有CloudWatch日志写入权限,Fluent Bit无法获取IAM凭证调用CloudWatch接口。
解决方案

修复目录丢失问题,二选一即可:

  • 方案1:修改业务启动逻辑:在业务容器启动命令中先执行目录创建逻辑,调整CMD为:
    CMD ["sh", "-c", "mkdir -p /logs/boot /logs/access && chmod -R 0777 /logs/* && ./erctl"]
    
  • 方案2:新增Init容器预创建目录:在Deployment的spec.template.spec下新增initContainers配置,业务容器启动前自动完成目录创建:
    initContainers:
    - name: log-dir-init
      image: alpine:latest
      command: ["sh", "-c", "mkdir -p /logs/boot /logs/access && chmod -R 0777 /logs/*"]
      volumeMounts:
      - mountPath: /logs
        name: logs
    

修复Fluent Bit权限问题:

给Pod使用的eretail服务账号关联具备以下权限的IAM角色,或者直接给EKS Fargate执行角色添加以下权限策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams"
      ],
      "Resource": "*"
    }
  ]
}

内容的提问来源于stack exchange,提问作者Nitin G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:45:05