diff --git a/roles/network_plugin/calico/tasks/install.yml b/roles/network_plugin/calico/tasks/install.yml
index 11d5d2f09a8d2f74188304616fc33477265025d7..48b4a25bc46c029ba165e52aa5ef1198848d763e 100644
--- a/roles/network_plugin/calico/tasks/install.yml
+++ b/roles/network_plugin/calico/tasks/install.yml
@@ -458,6 +458,9 @@
     kubectl: "{{ bin_dir }}/kubectl"
     filename: "{{ kube_config_dir }}/calico-ipamconfig.yml"
     state: "latest"
+  register: resource_result
+  until: resource_result is succeeded
+  retries: 4
   when:
     - inventory_hostname == groups['kube_control_plane'][0]
     - calico_datastore == "kdd"