我应该在哪里为多个kubernetes-clusters提供共享服务?

时间:2018-05-23 12:14:25

标签: docker kubernetes cloud

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

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

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

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

1。在每个集群内

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

骗局:

  • 我们没有一个中心点来分析我们的系统。
  • 如果整个群集已关闭,我们无法查看任何内容。
  • 多次安装相同的工具感觉不对。

2。创建其他群集

我们在另外一个kubernetes-cluster中安装共享工具。

缺点:

  • 其他群集的费用
  • 将持续数据发送到外部群集(网络,安全,防火墙等)可能更难。

3)使用其他根服务器

我们在oldschool-root-server上运行docker-containers。

缺点:

  • 使用root-server而不是使用cut-edge-k8s感到矛盾。
  • 单点故障。
  • 我们需要手动控制docker-containers(或将机器连接到rancher)。

我试图谷歌解决这个问题,但我找不到有关该主题的任何内容。任何人都可以给我一个关于这个主题的提示或一些链接吗? 或者群集可能会出现问题,这只是一个相关的问题吗?

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

重要的问题是:

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

感谢您的提示,

的Marius

1 个答案:

答案 0 :(得分:1)

这是一个非常复杂和哲学的话题,但我会向你提出我对它的看法以及支持它的一些事实。

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

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

  2. 是的,你需要付出更多。但是,您需要资源来运行共享应用程序,与应用程序相比,Kubernetes基础结构的开销不高。

  3. 使用单独的群集,您可以设置真正的HA解决方案,您可能不需要暂存和开发群集,因此您不会多次付费。

  4. 从技术上讲,它也没关系。您可以使用Heapster从多个集群中收集数据;几乎所有日志记录解决方案都可以使用多个集群。所有其他应用程序都可以在单独的群集上运行,而且只需要对它们进行操作。

  5. 现在,关于你的问题:

      

    在群集中拥有监控数据是否存在问题,因为如果群集处于脱机状态,则无法看到监控数据?

    不,这对单独的群集来说不是问题。

      

    通常的做法是为共享服务创建一个不会对应用程序的其他部分产生影响的其他集群吗?

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

      

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

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