在Kubernetes上运行Kafka合适吗?
Pod:Pod是Kubernetes中最小的可部署单元。它包含您的工作负载,它代表群集中的一个进程。一个Pod包含一个或多个容器。整体中的每个ZooKeeper服务器和Kafka集群中的每个Kafka broker都将在一个单独的Pod中运行。
StatefulSet:StatefulSet是一个Kubernetes对象,用于处理需要协调的多个有状态工作负载。StatefulSets保证Pod的有序性和唯一性的。
Headless Services:服务通过逻辑名称将Pod与客户端分离。Kubernetes负责负载平衡。但是,对于ZooKeeper和Kafka等有状态工作负载,客户端必须与特定实例进行通信。这就是 Headless Services发挥作用的地方:作为客户端,仍然可以获得逻辑名称,但不必直接访问Pod。
持久卷:如上所述,需要配置非本地持久块存储。
https://engineering.skybettingandgaming.com/2018/07/10/kafka-nfs/
https://kubernetes.io/docs/tutorials/stateful-application/zookeeper/
https://github.com/Yolean/kubernetes-kafka
https://github.com/helm/charts/tree/master/incubator/kafka
https://strimzi.io/
https://engineering.linkedin.com/kafka/benchmarking-apache-kafka-2-million-writes-second-three-cheap-machines
https://medium.com/@stephane.maarek/an-honest-review-of-aws-managed-apache-kafka-amazon-msk-94b1ff9459d8
https://github.com/linkedin/kafka-monitor
https://jobs.zalando.com/tech/blog/backing-up-kafka-zookeeper/