在Kubernetes上运行Kafka是一种好方法吗?

时间:2017-12-23 02:55:21

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

对于大型在线应用程序,请使用k8s运行它。比例可能是每日活动用户500,000。

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

  • 卡夫卡
  • 的RabbitMQ
  • Redis的

卡夫卡

它需要zookeeper并且在os上运行取决于磁盘I / O。那么如果将它安装到k8s集群中,怎么样?表现会更差?

而且,如果将Kafka保留在k8s群集之外,请从k8s群集中的应用程序连接Kafka,那么性能如何呢?他们在不同的层面,不会变慢?

的RabbitMQ

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

Redis的

这是另一种选择。也许是最简单的一个。但是从互联网上我得知它有时会失去信息。如果是真的那么可怕。

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

4 个答案:

答案 0 :(得分:2)

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

PS。在Kubernetes上运行你问题中的任何服务都会很愉快。您可以使用Google的服务名称和“kubernetes”查找示例清单。这里有很多例子:https://github.com/kubernetes/charts

答案 1 :(得分:1)

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

答案 2 :(得分:1)

您还可以查看以下项目:

https://github.com/EnMasseProject/barnabas

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

答案 3 :(得分:0)

在DigitalOcean中的Kubernetes上具有外部访问权限的Kafka / Zookeeper的另一种简单配置:

https://github.com/StanislavKo/k8s_digitalocean_kafka

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

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