diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index ffefbf87aa79d3c0e2fab6cd35eca8a23ccf9c88..148112835f77c24b153d5d85ad9702d7acaa6922 100644
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -1042,6 +1042,11 @@ enable_vitrage_prometheus_datasource: "{{ enable_prometheus | bool }}"
 influxdb_address: "{{ kolla_internal_fqdn }}"
 influxdb_datadir_volume: "influxdb"
 
+#################
+# Kafka options
+#################
+kafka_datadir_volume: "kafka"
+
 #########################
 # Internal Image options
 #########################
diff --git a/ansible/roles/destroy/tasks/cleanup_host.yml b/ansible/roles/destroy/tasks/cleanup_host.yml
index 17dba02cb701cb35cab341187ed8ac39c7bed296..314d8712c704747920583308bf02ecee8ee8c365 100644
--- a/ansible/roles/destroy/tasks/cleanup_host.yml
+++ b/ansible/roles/destroy/tasks/cleanup_host.yml
@@ -10,6 +10,7 @@
     nova_instance_datadir_volume: "{{ nova_instance_datadir_volume }}"
     gnocchi_metric_datadir_volume: "{{ gnocchi_metric_datadir_volume }}"
     influxdb_datadir_volume: "{{ influxdb_datadir_volume }}"
+    kafka_datadir_volume: "{{ kafka_datadir_volume }}"
     kolla_internal_vip_address: "{{ kolla_internal_vip_address }}"
     kolla_external_vip_address: "{{ kolla_external_vip_address }}"
     kolla_dev_repos_directory: "{{ kolla_dev_repos_directory }}"
diff --git a/ansible/roles/kafka/defaults/main.yml b/ansible/roles/kafka/defaults/main.yml
index f242cece41f8a02285392434206f94ce74f702ee..51c248e5e5d09e5fa507e2215ed482be2e695a1e 100644
--- a/ansible/roles/kafka/defaults/main.yml
+++ b/ansible/roles/kafka/defaults/main.yml
@@ -34,6 +34,6 @@ kafka_dimensions: "{{ default_container_dimensions }}"
 kafka_default_volumes:
   - "{{ node_config_directory }}/kafka/:{{ container_config_directory }}/"
   - "/etc/localtime:/etc/localtime:ro"
-  - "kafka:/var/lib/kafka/data"
+  - "{{ kafka_datadir_volume }}:/var/lib/kafka/data"
   - "kolla_logs:/var/log/kolla/"
 kafka_extra_volumes: "{{ default_extra_volumes }}"
diff --git a/doc/source/reference/logging-and-monitoring/index.rst b/doc/source/reference/logging-and-monitoring/index.rst
index a2cfbd0c9f77e5db78ecd312984af18853dd36b0..4aa730c2b1113488d9ca19b7fe6c987a13b3bf90 100644
--- a/doc/source/reference/logging-and-monitoring/index.rst
+++ b/doc/source/reference/logging-and-monitoring/index.rst
@@ -10,6 +10,7 @@ logging and monitoring services available in kolla.
 
    central-logging-guide
    influxdb-guide
+   kafka-guide
    monasca-guide
    osprofiler-guide
    prometheus-guide
diff --git a/doc/source/reference/logging-and-monitoring/kafka-guide.rst b/doc/source/reference/logging-and-monitoring/kafka-guide.rst
new file mode 100644
index 0000000000000000000000000000000000000000..2867e9f2fc6270a8acda26b3097c3f985eaf22b3
--- /dev/null
+++ b/doc/source/reference/logging-and-monitoring/kafka-guide.rst
@@ -0,0 +1,25 @@
+.. _kafka-guide:
+
+============
+Apache Kafka
+============
+
+Overview
+~~~~~~~~
+
+`Kafka <https://kafka.apache.org/intro>`_ is a distributed stream processing
+system. It forms the central component of Monasca and in an OpenStack context
+can also be used as an experimental messaging backend in `Oslo messaging
+<https://docs.openstack.org/oslo.messaging/latest/admin/kafka.html>`_.
+
+Kafka
+~~~~~
+
+A spinning disk array is normally sufficient for Kafka. The data directory
+defaults to a docker volume, ``kafka``. Since it can use a lot of disk space,
+you may wish to store the data on a dedicated device. This can be achieved by
+setting ``kafka_datadir_volume`` in ``/etc/kolla/globals.yml``:
+
+.. code-block:: yaml
+
+    kafka_datadir_volume: /mnt/spinning_array/kafka/
diff --git a/releasenotes/notes/add-variable-kafka-datadir-volume-382015a42sc57636.yaml b/releasenotes/notes/add-variable-kafka-datadir-volume-382015a42sc57636.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..3e552e7ae1c1467cab5fa2c6e8449590d7df8da2
--- /dev/null
+++ b/releasenotes/notes/add-variable-kafka-datadir-volume-382015a42sc57636.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Adds a new variable, ``kafka_datadir_volume``. This allows you to control
+    where the Kafka data is stored. Generally you will want this to be a
+    spinning disk, or an array of spinning disks.
diff --git a/tools/cleanup-host b/tools/cleanup-host
index 25dfc176a81caca78af56e5c1287b4d57601bdf4..0994c41934c93270f0ff1a514adf37bf53761ef6 100755
--- a/tools/cleanup-host
+++ b/tools/cleanup-host
@@ -68,6 +68,11 @@ if [[ "$influxdb_datadir_volume" != "influxdb" && -d "$influxdb_datadir_volume"
     rm -rfv  $influxdb_datadir_volume
 fi
 
+if [[ "$kafka_datadir_volume" != "kafka" && -d "$kafka_datadir_volume" ]]; then
+    echo "Removing kafka volume if it is customised"
+    rm -rfv  $kafka_datadir_volume
+fi
+
 FOLDER_PATH="/etc/kolla/"
 
 if [[ -e "$FOLDER_PATH/ovsdpdk-db/ovs-dpdkctl.sh" ]]; then