我告诉 containerd 按照 https://docs.docker.com/config/containers/logging/awslogs/文档中的建议使用/etc/docker/daemon.json
文件使用 awslogs
默认情况下,aws 流名称设置为随机生成的容器 ID,当您列出组中的流时,该 ID 毫无意义。
awslogs 驱动程序有一个选项将 awslogs-stream 设置为特定名称,但这不能满足我的需求,因为我希望不同的容器使用不同的流。
我想我想做的是告诉 docker 从映像名称和容器 ID 组成流 ID,但我找不到选项。
从理论上讲,我可以直接在docker run
命令中设置流名称,但这还不够好,因为我使用 Kubernetes 启动这些容器,所以我不确定如何从应用程序 yml 文件中设置stream_name。
任何想法如何满足我的需求?
你是对的,没有迹象表明--log-opt
被实施到 Kubernetes 中,因为 dockerd 已被弃用。
您没有指定awslogs-stream
而是尝试设置tag
?
- 检查这个将 Awslogs 与 Kubernetes "本机"一起使用,因为它可能完全适合您的需求。
从您发布的 Docker 文档链接:
指定
tag
作为awslogs-stream
选项的替代方法。tag
解释 Go 模板标记,例如{{.ID}}
、{{.FullID}}
或{{.Name}}
docker.{{.ID}}
。 有关所有受支持的模板替换的详细信息,请参阅标记选项文档。
另一种可行的方法是使用 sidecar 容器守护程序来处理日志,然后转发到 awslog,但tag
是一个更干净、更简单的解决方案。
这是流利的过程:
如何将 Kubernetes 日志发送到 AWS Cloudwatch