【问题标题】:Is it a good way to run Kafka on Kubernetes?这是在 Kubernetes 上运行 Kafka 的好方法吗?
【发布时间】:2018-06-05 13:43:15
【问题描述】:

对于大型在线应用,使用 k8s 运行。规模可能日活用户50万。

k8s 内部的应用需要消息传递功能 - Pub/Sub,有以下选项:

  • 卡夫卡
  • RabbitMQ
  • Redis

卡夫卡

它需要 zookeeper 并且在操作系统上运行良好取决于磁盘 I/O。那么如果将它安装到k8s集群中,如何?性能会更差吗?

而且,如果将 Kafka 保持在 k8s 集群之外,将 Kafka 从 k8s 集群内的应用程序连接起来,那性能如何?他们在不同的层,不会很慢吗?

RabbitMQ

它比Kafka慢,但是对于一个日活用户500,000的应用程序来说,它足够好吗?如果是这样,也许这是一个不错的选择。

Redis

这是另一种选择。也许是最简单的一个。但是从互联网上我了解到它有时会丢失消息。如果是真的,那就太可怕了。


所以,最重要的是,在 k8s 上使用 Kafka(也与 zookeeper 一起),在这个用例中好还是不好?

【问题讨论】:

    标签: redis rabbitmq apache-kafka kubernetes apache-zookeeper


    【解决方案1】:

    另一个简单的在DigitalOcean中Kubernetes上的Kafka/Zookeeper配置与外部访问:

    https://github.com/StanislavKo/k8s_digitalocean_kafka

    您可以通过常规二进制协议从 AWS/DO/GCE 外部连接到 Kafka。连接是 PLAINTEXT 或 SASL_PLAINTEXT(用户/密码)。

    Kafka 集群是 StatefulSet,因此您可以轻松扩展集群。

    【讨论】:

    【解决方案2】:

    你也可以看看以下项目:

    https://github.com/EnMasseProject/barnabas

    这也是关于在 Kubernetes 和 OpenShift 上运行 Kafka。它提供了使用具有持久卷或仅在内存中的 StatefulSets 进行部署(用于开发或仅用于测试目的)。它还提供 Kafka Connect 和 Prometheus 指标的部署。

    【讨论】:

      【解决方案3】:

      是的,在 Kubernetes 上运行 Kafka 很棒。看看这个例子:https://github.com/Yolean/kubernetes-kafka。它包括 ZooKeeper 和 Kafka 为StatefulSets。


      附言。在 Kubernetes 上运行您问题中的任何服务都会很愉快。您可以谷歌服务的名称和“kubernetes”并找到示例清单。这里有很多例子:https://github.com/kubernetes/charts

      【讨论】:

      • 非常感谢您的回答。正如我所问和担心的那样,它的性能与使用纯操作系统和使用 docker 的 k8s 相同吗?
      • 我认为 kubernetes 总是有开销。我没有对它进行基准测试,但我读到 kubernetes 确实有开销。我会谷歌它。不过,就我个人而言,我认为开销不会因为方便而减损。
      【解决方案4】:

      对于 Kafka,你可以找到一些建议here。 Kubernetes 1.7+ 支持local persistent volume,这可能对 Kafka 部署有好处。

      【讨论】:

        猜你喜欢
        • 2012-09-19
        • 2020-12-19
        • 2017-12-25
        • 2021-03-31
        • 2011-03-19
        • 2015-05-06
        • 2012-06-02
        • 2011-04-08
        • 1970-01-01
        相关资源
        最近更新 更多