diff --git a/roles/network_plugin/weave/tasks/main.yml b/roles/network_plugin/weave/tasks/main.yml
index eb56d8c9bca09098f361b39383df7dc8f5af05d3..25a9837dbf448b020f9a8a5239fac26509575e92 100644
--- a/roles/network_plugin/weave/tasks/main.yml
+++ b/roles/network_plugin/weave/tasks/main.yml
@@ -9,6 +9,26 @@
   notify:
     - restart docker
 
+- name: Weave | Determine hyperkube cni to use depending of the version of kube
+  set_fact:
+    use_hyperkube_cni: >
+      {%- if kube_version | version_compare('v1.3.4','>=') -%}
+        true
+      {%- elif kube_version | version_compare('v1.3.4','<') -%}
+        false
+      {%- else -%}
+        {{ ErrorCannotRecognizeVersion }}
+      {%- endif -%}
+
+- name: Weave | Copy cni plugins from hyperkube
+  command: "/usr/bin/docker run --rm -v /opt/cni/bin:/cnibindir {{ hyperkube_image_repo }}:{{ hyperkube_image_tag }} /bin/cp -r /opt/cni/bin/. /cnibindir/"
+  register: cni_task_result
+  until: cni_task_result.rc == 0
+  retries: 4
+  delay: "{{ retry_stagger | random + 3 }}"
+  changed_when: false
+  when: "{{ use_hyperkube_cni|bool }}"
+
 - name: Weave | Install weave
   command: rsync -piu "{{ local_release_dir }}/weave/bin/weave" "{{ bin_dir }}/weave"
   changed_when: false