Mesos 上的 Kubernetes

Kubernetes on Mesos

我有以下设置: /16 网络中的 Kubernetes on Mesos(基于 kubernetes-mesos 项目)。 每个 pod 都有自己的 IP,我相信这将有 64 000 pods。 这个想法是为每个应用程序提供隔离,即每个应用程序在同一个 pod 中都有自己的 mysql - 应用程序访问本地主机上的 mysql(在 pod 中)。 如果需要额外的服务,我会使用 kubernetes 滚动更新将服务的容器添加到 pod,应用程序也将能够在本地主机上访问这个新服务。 每个应用程序都需要尽可能多的隔离。

  1. 这样的实现有什么缺陷吗?
  2. 我必须使用 weave 吗?
    • 在 运行 安装 kubernetes-mesos 时,有一个选项可以指定服务 IP 范围。
  3. 一个漏洞是我如何扩展服务,这真的可行吗?
  4. 有更好的方法吗?即提供隔离服务

谢谢。 PS//我显然是这方面的菜鸟,我正在努力获得最佳设置 运行。

这种设计适用于小型应用程序,但你是对的,如果你突然想要两个有几个服务实例访问相同的 mysql 后端,则很难扩展.

您可能想考虑将每项服务放入单独的名称空间中。然后服务的 DNS 查找将默认限定在它自己的命名空间内,这样它就不会找到其他服务的资源,除非它明确地寻找它们。这将使您可以将 mysql(以及任何其他依赖项)放在单独的 pod 中,以便前端可以独立扩展。

一个常见的误解是 Pod 应该管理垂直的多层堆栈:例如 Web 层 + DB 层。

阅读 Kubernetes design intent of Pods 很有趣:它们用于收集 'helper' 个进程,而不是组成一个垂直堆栈。

为了回答您的问题,我建议:

  • 仅为 Web 层定义一个 Pod 模板。这可以扩展到任何需要的大小,使用复制控制器(问题 #1 和 #3)。
  • 为 MySQL 定义另一个 Pod。
  • 使用 Service abstraction 定位这些组件。