使用awslogs与kubernetes'本地'

问题描述 投票:2回答:1
  1. 我想出了一种配置k8s以使用aws日志而无需任何第三方服务/应用程序的方法。您所要做的就是在master.yaml文件中添加以下行:
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}}
  1. 最后一行是最重要的一行,它会将每个pod的日志流重命名为可读的而不是docker hash。
  2. 不言而喻,您必须更新群集才能使更改生效。 (kops更新群集$ {CLUSTER-NAME} --yes)
  3. 而已。打开AWS Cloudwatch并享受您的日志:-)
  4. 话虽如此,我有一个问题。日志流名称包含的信息比我想要的要多得多。知道如何将日志流名称修改为pod漂亮的名称吗?
  5. 我尝试了几种操作'tag'值的方法(例如tag = {{with split .Name“_”}} {{index。2}} {{end}}),但是更新操作失败了。
  6. logstream name example:k8s_POD-NICE-NAME_POD-NICE-NAME-67c77758bf-8knn8_mind_24ed4160-5b5e-11e9-b53a-0a02b6d80d7c_1
amazon-web-services kubernetes amazon-cloudwatchlogs
1个回答
0
投票

在这种情况下,您使用Docker awslogs驱动程序进行日志记录。在这种情况下,您必须指定awslogs-stream或tag选项以更改默认的流名称。标签更灵活,我认为它会更好地适应您的要求,因为它解释了Go模板标记。这样,您可以拥有更友好的流名称而不是容器ID。

来自docker文档:

指定标记作为awslogs-stream选项的替代方法。标记解释Go模板标记,例如{{。ID}},{{.FullID}}或{{.Name}} docker。{{。ID}}。有关所有支持的模板替换的详细信息,请参阅标记选项文档。

如果同时指定了awslogs-stream和tag,则为awslogs-stream提供的值将覆盖使用tag指定的模板。

如果未指定,则将容器ID用作日志流。

请参阅tag和awslogs-stream选项:https://docs.docker.com/config/containers/logging/awslogs/

© www.soinside.com 2019 - 2024. All rights reserved.