diff --git a/roles/kubernetes/preinstall/tasks/main.yml b/roles/kubernetes/preinstall/tasks/main.yml
index fcbea6404671ae97bc7f2b2ab567063e8f3e24bb..75fafaf56920bd858a1867868b7ecf6f3bff3a7b 100644
--- a/roles/kubernetes/preinstall/tasks/main.yml
+++ b/roles/kubernetes/preinstall/tasks/main.yml
@@ -1,4 +1,8 @@
 ---
+# Disable swap
+- import_tasks: swapoff.yml
+  when: disable_swap
+
 - import_tasks: verify-settings.yml
   tags:
     - asserts
diff --git a/roles/kubernetes/preinstall/tasks/swapoff.yml b/roles/kubernetes/preinstall/tasks/swapoff.yml
new file mode 100644
index 0000000000000000000000000000000000000000..345e7582518919c92125c9e3ace75ecee4945153
--- /dev/null
+++ b/roles/kubernetes/preinstall/tasks/swapoff.yml
@@ -0,0 +1,10 @@
+---
+- name: Remove swapfile from /etc/fstab
+  mount:
+    name: swap
+    fstype: swap
+    state: absent
+
+- name: Disable swap
+  command: swapoff -a
+  when: ansible_swaptotal_mb > 0
diff --git a/roles/kubespray-defaults/defaults/main.yaml b/roles/kubespray-defaults/defaults/main.yaml
index 556a73751b40400aeef3ead4c07c10d8ab2cddb2..2394ec4b72f5836e0bd25fe9dd70dbb67c5ccc96 100644
--- a/roles/kubespray-defaults/defaults/main.yaml
+++ b/roles/kubespray-defaults/defaults/main.yaml
@@ -12,6 +12,8 @@ kube_api_anonymous_auth: false
 # Default value, but will be set to true automatically if detected
 is_atomic: false
 
+# optional disable the swap
+disable_swap: false
 
 ## Change this to use another Kubernetes version, e.g. a current beta release
 kube_version: v1.10.4