Kubernetes 中的分片

Kubernetes 中的分片

我们有一个在 kubernetes 中运行的应用程序。但是,这个应用程序仅支持固定数量的人。

它有多个系统:

  1. D B
  2. 认证系统
  3. Web应用程序
  4. 媒体经理

我们可以按需扩展Web ApplicationMedia Manager。但是,Authentication system设计时并未考虑到扩展到更高的数字。这也是一个问题,因为这是一个封闭的系统,所以无法对其进行修改。

但是,系统可以自行扩展,就像一个分片一样。我们可以毫无问题地将不同的用户发送到每个分片。

我们如何才能扩大这些规模shards

系统现在的行为如下:

  1. 1 数据库/身份验证部署
  2. 1 Web 应用程序部署
    1. HPA 检查应用程序的负载并根据需要进行扩展
  3. 媒体管理器的状态集
    1. 可根据需要扩展的 HPA

因此我们需要一个更高级别的东西来做这件事:

  1. 操作员?控制器?也许分析指标?这将扩大以下范围:
    1. 1 数据库/身份验证部署
    2. 1 Web 应用程序部署
      1. HPA 检查应用程序的负载并根据需要进行扩展
    3. 媒体管理器的状态集
      1. 可根据需要扩展的 HPA

因此,随着负载的增加,我们能够根据需要扩大这些“分片”。

我认为可以通过控制器或操作员来实现。但是,有没有操作员已经像这样工作了?

感谢您的帮助!

答案1

让我们从部署开始,由于您正在使用部署,我假设这些部署可以轻松扩展,
您可以通过向其 pod 添加 sidecar 容器来监控这些部署,从而公开指标数据,然后收集数据并将其存储在 prometheus 之类的东西中,然后您可以使用 prometheus 调用 webhook,只要这些指标显示数据库延迟或应用程序任何类型的高响应时间。
接收 webhook 的应用程序将通过 kubernetes api 扩大或缩小您的部署(您应该开发这个应用程序,但它相当简单)

对于身份验证系统,您可以使用相同的策略,但略有不同。
假设您有 4 个分片,为每个分片创建一个单独的部署,每个分片都有一个分片,由于它是分片的,我假设已经建立了路由机制。
配置路由机制以通过各自的服务在这 4 个部署之间分配请求。
像其他系统一样从身份验证管理器收集指标,但是当您的系统检测到性能下降时,重新分片身份验证管理器,方法取决于它的行为。
例如,当您向分片群集添加更多副本集时,mongodb 分片群集将扩展,但当需要更多性能时,redis 群集需要分片重新平衡和哈希槽修改。
无论哪种方式,您都需要按需创建更多部署,这也是从 prometheus 接收 webhook 的应用程序的工作。
还要重新配置路由机制以连接到新创建的分片。

相关内容