【问题标题】:Recommended Docker Image Architecture推荐的 Docker 镜像架构
【发布时间】:2022-11-09 22:05:24
【问题描述】:

我们有一些想要在 docker 容器中运行的应用程序。我们最初的尝试创建了一个“基础镜像”,作为不同应用程序镜像的基础。它包含基本的 Linux 操作系统、jdk 等。现在我们正在考虑添加与 ELK 堆栈的集成,我们将在单独的服务器集群上运行。我正在考虑使用 Metric Beat 和 File Beat 将数据发送到 ELK 集群。

我正在考虑几种方法,并且想知道哪种方法更好(或另一种>>)。

  • 将文件节拍和公制节拍添加到“基本映像”。应用程序映像将使用它作为基础并为 Beats 模块添加配置。
  • 在每台服务器上将 File Beat 和 Metric Beat 作为单独的 docker 容器运行,并利用 docker compose 进行编排。
  • 将 Elastic 代理用作单独的容器?

谢谢

【问题讨论】:

  • 您想在单个 docker 容器中运行多个应用程序吗?

标签: docker elastic-stack elastic-beats


【解决方案1】:

我建议每个容器有 1 个应用程序,并使用 Kubernetes 作为容器调度程序。

一些好处:

  • 较小的图像,每个都有一个进程,可以更轻松地独立扩展每个应用程序
  • 每个容器都可以写日志到标准输出,日志由K8s收集到本地磁盘。 Filebeat 可以从 k8s 节点挂载本地磁盘(例如 /var/log/containers)并将日志流式传输到 ELK。如果您有多个 k8s 节点,则需要在 Daemonset 中运行 Filebeat,以便从每个 k8s 节点流式传输来自每个容器的所有日志。
  • 每个应用程序都可以在同一个端口公开一个类似 Prometheus 的端点,您可以使用 metricbeat 收集这些指标(每个 k8s 节点也有一个实例)并将它们流式传输到 ELK

弹性代理 vs filebeat/metricbeat 只是为了方便。如果堆栈中有 Fleet 服务器,则 Elastic 代理更易于管理。您可以集中方式启动/停止弹性代理、添加集成和更改代理策略。对于一个简单的项目来说,这可能有点矫枉过正,但它始终是我的首选。

【讨论】:

    猜你喜欢
    • 2023-01-17
    • 1970-01-01
    • 2021-05-25
    • 2020-08-09
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多