diff --git a/roles/kubernetes/node/tasks/main.yml b/roles/kubernetes/node/tasks/main.yml
index a8cb6ce5aad9959adb38d26b009b992c0585036c..0680798d38599a5e75a7c93fd2aae4f2c1ca34df 100644
--- a/roles/kubernetes/node/tasks/main.yml
+++ b/roles/kubernetes/node/tasks/main.yml
@@ -4,13 +4,6 @@
 - include: nginx-proxy.yml
   when: is_kube_master == false and loadbalancer_apiserver_localhost|default(false)
 
-- name: Write Calico cni config
-  template:
-    src: "cni-calico.conf.j2"
-    dest: "/etc/cni/net.d/10-calico.conf"
-    owner: kube
-  when: kube_network_plugin == "calico"
-
 - name: Write kubelet config file
   template: src=kubelet.j2 dest={{ kube_config_dir }}/kubelet.env backup=yes
   notify:
diff --git a/roles/network_plugin/calico/defaults/main.yml b/roles/network_plugin/calico/defaults/main.yml
index 7b608ab7e589ca208e52116b5dc03532096d8574..f0f91d39e5814430585463c9f1b7d41e6b91c3c0 100644
--- a/roles/network_plugin/calico/defaults/main.yml
+++ b/roles/network_plugin/calico/defaults/main.yml
@@ -11,3 +11,8 @@ overwrite_hyperkube_cni: true
 
 calico_cert_dir: /etc/calico/certs
 etcd_cert_dir: /etc/ssl/etcd/ssl
+
+# You can set MTU value here. If left undefined or empty, it will
+# not be specified in calico CNI config, so Calico will use built-in
+# defaults. The value should be a number, not a string.
+# calico_mtu: 1500
diff --git a/roles/network_plugin/calico/tasks/main.yml b/roles/network_plugin/calico/tasks/main.yml
index 8c4fea86c352555d3b0f461f1fd081657cddbfdb..7f84fdb242116eed771220784d74928e36dc3b40 100644
--- a/roles/network_plugin/calico/tasks/main.yml
+++ b/roles/network_plugin/calico/tasks/main.yml
@@ -1,4 +1,10 @@
 ---
+- name: Calico | Write Calico cni config
+  template:
+    src: "cni-calico.conf.j2"
+    dest: "/etc/cni/net.d/10-calico.conf"
+    owner: kube
+
 - name: Calico | Set docker daemon options
   template:
     src: docker
diff --git a/roles/kubernetes/node/templates/cni-calico.conf.j2 b/roles/network_plugin/calico/templates/cni-calico.conf.j2
similarity index 85%
rename from roles/kubernetes/node/templates/cni-calico.conf.j2
rename to roles/network_plugin/calico/templates/cni-calico.conf.j2
index 4e9752ef44df725d834e340b486d10b0240a6360..af2d28da65ad642639ac47e66f868c642c40fadb 100644
--- a/roles/kubernetes/node/templates/cni-calico.conf.j2
+++ b/roles/network_plugin/calico/templates/cni-calico.conf.j2
@@ -13,6 +13,9 @@
   "policy": {
     "type": "k8s"
   },
+{% endif %}
+{% if calico_mtu is defined and calico_mtu is number %}
+  "mtu": {{ calico_mtu }},
 {% endif %}
   "kubernetes": {
     "kubeconfig": "{{ kube_config_dir }}/node-kubeconfig.yaml"