diff --git a/roles/kubernetes/preinstall/tasks/verify-settings.yml b/roles/kubernetes/preinstall/tasks/verify-settings.yml
index 581acdc8fb686cb285e5dda73008ba6ad058b571..6910824a52f97320726f97400a668dafe40e8298 100644
--- a/roles/kubernetes/preinstall/tasks/verify-settings.yml
+++ b/roles/kubernetes/preinstall/tasks/verify-settings.yml
@@ -103,3 +103,9 @@
     that: ansible_kernel.split('-')[0]|version_compare('4.8', '>=')
   when: kube_network_plugin == 'cilium'
   ignore_errors: "{{ ignore_assert_errors }}"
+
+- name: Stop if bad hostname
+  assert:
+    that: inventory_hostname | match("[a-z0-9]([-a-z0-9]*[a-z0-9])?$")
+    msg: "Hostname must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character"
+  ignore_errors: "{{ ignore_assert_errors }}"