<p>For a large online application, use k8s to run it. The scale maybe daily activity user 500,000.</p>

<p>The application inside k8s need messaging feature - Pub/Sub, there are these options:</p>

<ul>
<li>Kafka</li>
<li>RabbitMQ</li>
<li>Redis</li>
</ul>

<h1>Kafka</h1>

<p>It needs zookeeper and good to run on os depends on disk I/O. So if install it into k8s cluster, how? The performance will be worse?</p>

<p>And, if keep Kafka outside of the k8s cluster, connect Kafka from application inside the k8s cluster, how about that performance? They are in the different layer, won't be slow?</p>

<h1>RabbitMQ</h1>

<p>It's slow than Kafka, but for a daily activity user 500,000 application, is it good enough? If so, maybe it's a good choice.</p>

<h1>Redis</h1>

<p>It's another option. Maybe the most simple one. But from the internet I got that it will lose message sometimes. If true, that's terrible.</p>

<hr>

<p>So, the most important thing is, use Kafka(also with zookeeper) on k8s, good or not in this use case?</p>

<p>Yes, running Kafka on Kubernetes is great. Check out this example: <a href="https://github.com/Yolean/kubernetes-kafka" rel="noreferrer">https://github.com/Yolean/kubernetes-kafka</a>. It includes ZooKeeper and Kafka as <code>StatefulSet</code>s.</p>

<hr>

<p>PS. Running any of the services in your question on Kubernetes will be pleasant. You can Google the name of the service and "kubernetes" and find example manifests. Many examples here: <a href="https://github.com/kubernetes/charts" rel="noreferrer">https://github.com/kubernetes/charts</a>.</p>
