spec:
additionalPolicies:
master: |
[
{
"Effect": "Allow",
"Action": ["logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents"],
"Resource": ["*"]
}
]
node: |
[
{
"Effect": "Allow",
"Action": ["logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents"],
"Resource": ["*"]
}
]
docker:
logDriver: awslogs
logOpt:
- awslogs-region=eu-west-1
- awslogs-group=<group-name> # make sure that this group already exist (create it manually)
- tag={{.Name}}
最后一行是最重要的一行,它将把每个pod的日志流重命名为可读的内容,而不是docker哈希。
毫无疑问,您必须更新集群才能使更改生效。 (请更新集群$ {CLUSTER-NAME}-是)
就是这样。打开AWS Cloudwatch并享受您的日志:-)
话虽如此,我有一个问题。日志流名称包含的信息比我想要的要多得多。知道如何将日志流名称简化为Pod Nice名称吗?
我尝试了几种处理'tag'值的方法(例如,tag = {{带split .Name“ _”}} {{index。2}} {{end}}),但是它具有更新操作失败。
日志流名称示例:k8s_POD-NICE-NAME_POD-NICE-NAME-67c77758bf-8knn8_mind_24ed4160-5b5e-11e9-b53a-0a02b6d80d7c_1
答案 0 :(得分:0)
在这种情况下,您将使用Docker awslogs驱动程序进行日志记录。在这种情况下,您必须指定awslogs-stream或tag选项才能将流名称更改为默认值。该标签更具灵活性,我认为它可以解释Go模板标记,因此可以更好地适应您的要求。这样,您可以拥有一个更友好的流名称,而不是容器ID。
来自docker文档:
指定标记以替代awslogs-stream选项。标签会解释Go模板标记,例如{{.ID}},{{。FullID}}或{{.Name}}码头工人。{{。ID}}。有关所有支持的模板替换的详细信息,请参见标签选项文档。
同时指定awslogs-stream和tag时,为awslogs-stream提供的值将覆盖用tag指定的模板。
如果未指定,则将容器ID用作日志流。
在此处查看tag和awslogs-stream选项: https://docs.docker.com/config/containers/logging/awslogs/