diff --git a/roles/network_plugin/calico/tasks/install.yml b/roles/network_plugin/calico/tasks/install.yml
index 6a356719e21071e2d4eca26794007b60ebabab74..20c1473e297994026e5331d205a1dfd9a60bf675 100644
--- a/roles/network_plugin/calico/tasks/install.yml
+++ b/roles/network_plugin/calico/tasks/install.yml
@@ -157,6 +157,9 @@
         kubectl: "{{ bin_dir }}/kubectl"
         filename: "{{ kube_config_dir }}/kdd-crds.yml"
         state: "latest"
+      register: kubectl_result
+      until: kubectl_result is succeeded
+      retries: 5
       when:
         - inventory_hostname == groups['kube_control_plane'][0]
   when: