【问题标题】:Feasibility of using multi master Kubernetes cluster architecture使用多主Kubernetes集群架构的可行性
【发布时间】:2018-08-25 00:59:26
【问题描述】:

我正在尝试使用 Kubernetes 和 Jenkins 实现 CI/CD 管道。在我的应用程序中,我有 25 个微服务。并且需要为 5 个不同的客户端部署它。微服务代码是唯一的。但是每个客户端的配置是不同的。

所以我在这里使用 5 个不同的配置文件/配置来配置 Spring 云配置服务器。当我构建 Docker 映像时,我将通过在 Docker 文件中添加活动配置文件来定义哪个是活动配置服务器配置文件。因此,我从 25 个微服务中构建 25 * 5 个 Docker 映像并进行部署。因此,我需要在 Kubernetes 集群中部署总共 125 个微服务。这些微服务是从我的 Angular 2 前端应用程序调用的。

这里我在考虑应用的性能和响应速度的时候,单master就够了这个应用架构?还是我一定需要使用多主 Kubernetes 集群?如何管理此应用程序?

我不熟悉这些云和 CI/CD 管道架构任务。所以我对工作流程的设计感到困惑。如果一个master就够了,那我就可以继续用current了。否则我需要实现多主 Kubernetes HA 集群。

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    应用程序的性能和/或速度不取决于主节点的数量。它解决了高可用性问题,但不能解决性能问题。现在,您仍然应该考虑为您正在处理的这个实现至少拥有 3 个主控器。如果 master 宕机了,你的集群就没用了。

    在 Kubernetes 中,主节点通过将集群的所需状态设置为当前状态来获取 API 调用并对其进行操作。但最终是节点(奴隶)在做繁重的工作。因此,您的性能问题将主要(如果不是完全)取决于您的节点。如果你有足够的内存和 CPU,应该没问题。

    【讨论】:

    • 好的。我明白你的意思。谢谢你。但我对你的最后陈述表示怀疑。我们如何在节点级别分析 POD 的内存量和 CPU 需求量? .如果我将 EC2 机器作为 Worker Machine/Node 启动,那么如何在 Pod 之间分配 VM 总 RAM 容量以进行部署?您能否阐明关于在节点级别基于内存进行架构的想法?
    • 这将取决于您的应用程序。您需要根据应用程序的资源(CPU 和内存)来定义消耗量。一旦定义,您可以决定选择什么机器类型,以及选择多少。我建议您也为每个 pod 定义资源请求和限制,因为默认情况下,一个 pod 可以使用其节点的所有 CPU 和内存,因此如果出现问题,它可能会饿死其他 pod。 我会详细说明,但我没有足够的字符。
    • 你能在下面附上你的评论吗?我在这里没有看到聊天选项。
    • 我说了很多。我的意思是我会添加示例和更多文本,如果有更多空间的话,但是上面已经说了主干。我会添加这个。不要将集群视为单独的 VM,每个 VM 具有一定数量的 CPU 和内存(除非您有 1 个消耗 A LOT 的超级 pod),而是将其视为一个。然后设置资源请求和限制,您将为每个 pod 提供所需的资源。
    【解决方案2】:

    多主机听起来对 HA 来说是个好主意。

    您还可以考虑使用Helm,它允许您在每个安装的基础上配置微服务,这样您就不必每次都重新发布 docker 映像来配置新环境。然后,您可以将 helm 配置注入到 ConfigMap 中,该 ConfigMap 将内容挂载为 application.yml,以便 Spring Boot 自动加载设置

    【讨论】:

      猜你喜欢
      • 2019-04-03
      • 2016-11-24
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 2019-07-11
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      相关资源
      最近更新 更多