提问者:小点点

我应该将多个kubernetes集群的共享服务放在哪里?


我们公司正在开发一个应用程序,它在3个不同版本的独立kubernetes集群中运行(生产、暂存、测试)。我们需要随着时间的推移监控我们的集群和应用程序(指标和日志)。我们还需要运行一个邮件服务器。

所以基本上我们有3个不同的环境和不同版本的应用程序。我们有一些共享服务只需要运行,我们不太关心它们:

  • 监控:我们需要安装inposxdb和grafana。在每个集群中都有一个预安装的堆,需要将数据发送到我们的工具。
  • 记录:我们还没有决定。
  • 邮件服务器(https://github.com/tomav/docker-mailserver)
  • 独立服务:Sentry、Gitlab

我不确定在哪里运行这些外部共享服务。我找到了这些选项:

我们需要为3个环境安装3次工具。

骗局:

  • 我们没有一个中心点来分析我们的系统。
  • 如果整个集群都关闭了,我们什么都看不到。
  • 多次安装相同的工具感觉不对。

我们将共享工具安装在一个额外的kubernetes集群中。

骗局:

  • 额外集群的成本
  • 将正在进行的数据发送到外部集群(网络、安全、防火墙等)可能更难。

我们在旧学校根服务器上运行docker容器。

骗局:

  • 使用根服务器而不是尖端k8s感觉很矛盾。
  • 单点故障。
  • 我们需要手动控制docker-容器(或将机器附加到rancher)。

我试图用谷歌搜索这个问题,但我找不到任何关于这个主题的信息。有人能给我一个提示或一些关于这个主题的链接吗?或者集群可能会宕机只是没有相关问题?

对我来说,第二种选择听起来不那么邪恶,但我还不能估计是否很难将数据从一个集群传输到另一个集群。

重要的问题是:

  • 集群中有监控数据是否有问题,因为如果集群离线,则无法看到监控数据?
  • 为共享服务添加一个不应该对应用程序的其他部分产生影响的集群是否是常见做法?
  • 是否(很容易)可以将指标和日志从一个kubernetes-集群发送到另一个集群(我们在OpenTelekomCloud中运行kubernetes,基本上是OpenStack)?

谢谢你的提示,

马吕斯


共1个答案

匿名用户

这是一个非常复杂和哲学的话题,但我会给你我的观点和一些事实来支持它。

我认为最好的方法是第二种-创建一个额外的集群,这就是为什么:

>

  • 您需要一个可以从任何环境访问的点。使用单独的集群,您可以在所有环境中设置相同的防火墙规则、路由等,并且不会影响您当前的工作负载。

    是的,您需要多付一点钱。但是,您需要资源来运行共享应用程序,与应用程序相比,库伯内特斯基础架构的开销并不高。

    使用单独的集群,您可以设置真正的HA解决方案,登台和开发集群可能不需要该解决方案,因此您无需多次付费。

    从技术上讲,这也没问题。您可以使用Heapster从多个集群收集数据;几乎任何日志记录解决方案也可以与多个集群一起使用。所有其他应用程序都可以在单独的集群上运行,这就是您需要对它们执行的所有操作。

    现在,关于你的问题:

    集群中有监控-数据是否有问题,因为如果集群离线,则无法看到监控-数据?

    不,不是单独集群的问题。

    为共享服务添加一个不应该对应用程序的其他部分产生影响的集群是否是常见做法?

    我想,是的。至少我做过几次,我知道一些类似架构的其他项目。

    是否(很容易)可以将度量和日志从一个kubernetes集群发送到另一个集群(我们在基本上是OpenStack的OpenTelekomCloud中运行kubernetes)?

    是的,那里没有什么复杂的。通常,它不依赖于平台。