我是Kubernetes的新手,当我以前使用Docker swarm时,我可以通过以下方式重定向日志记录:
myapp:
image: myregistry:443/mydomain/myapp
deploy:
mode: global
restart_policy:
condition: on-failure
logging:
driver: gelf
options:
gelf-address: "udp://localhost:12201"
environment:
- LOGGING_LEVEL=WARN
以这种方式,而不是使用docker service logs -f myapp
或在这种情况下kubectl logs -f myapp
来查询日志,我将它们重定向到以集中方式对其进行监视(例如,使用ELK)。
Kubernetes是否可能?什么是等效解决方案?
谢谢您的帮助
答案 0 :(得分:4)
是的,有许多开源和商业解决方案都可以将所有kubernetes日志(应用程序和集群以及所有内容)发送到类似ELK的系统。
假设您已经设置了ElasticSearch。
我们正在使用FluentBit将K8S日志发送到EFK:
Fluent Bit DaemonSet已准备好与普通Kubernetes集群上的Elasticsearch一起使用
https://github.com/fluent/fluent-bit-kubernetes-logging
我们还使用SearchGurard和ELk来限制用户查看仅在自己的名称空间中运行的应用程序的日志。
答案 1 :(得分:0)
ELK堆栈是一种非常常见的日志聚合和索引编制方法。有很多很棒的教程将这个堆栈部署到Kubernetes上,或者您可以使用这个稳定的头盔图来通过一个命令安装所有内容:
https://github.com/helm/charts/tree/master/stable/elastic-stack
如果您以前从未使用过Helm,则可以通过values.yaml调整部署。