- Я придумал способ настроить 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}}
Последняя строка является самой важной, и она переименует поток журнала для каждого модуля в нечто читаемое вместо хэша докера.
само собой разумеетсянеобходимо обновить кластер, чтобы изменения вступили в силу.(копировать обновление кластера $ {CLUSTER-NAME} --yes)
Вот и все.Откройте AWS Cloudwatch и наслаждайтесь своими журналами: -)
С учетом сказанного у меня есть одна проблема.Имя потока журнала содержит гораздо больше информации, чем я хотел бы.Любая идея, как обрезать имя потока журнала в просто хорошее имя pod?
Я пробовал несколько способов манипулирования значением 'tag' (например, tag = {{with split .Name"_"}} {{index. 2}} {{end}}), но не удалось выполнить операцию обновления.
Пример имени потока журнала: k8s_POD-NICE-NAME_POD-NICE-NAME-67c77758bf-8knn8_mind_24ed4160-5b5e-11e9-b53a-0a02b6d80d7c_1