diff --git a/roles/kubernetes/preinstall/tasks/0050-create_directories.yml b/roles/kubernetes/preinstall/tasks/0050-create_directories.yml
index 996eb4f32c1a75caaf4601be27f6bffa54e6c93d..f77398986b6262aec9eefd7c924962c935b9066b 100644
--- a/roles/kubernetes/preinstall/tasks/0050-create_directories.yml
+++ b/roles/kubernetes/preinstall/tasks/0050-create_directories.yml
@@ -76,7 +76,6 @@
   with_items:
     - "/etc/cni/net.d"
     - "/opt/cni/bin"
-    - "/var/lib/calico"
   when:
     - kube_network_plugin in ["calico", "weave", "flannel", "cilium", "kube-ovn", "kube-router", "macvlan"]
     - inventory_hostname in groups['k8s_cluster']
@@ -89,6 +88,22 @@
     - kube-router
     - bootstrap-os
 
+- name: Create calico cni directories
+  file:
+    path: "{{ item }}"
+    state: directory
+    owner: "{{ kube_owner }}"
+    mode: 0755
+  with_items:
+    - "/var/lib/calico"
+  when:
+    - kube_network_plugin == "calico"
+    - inventory_hostname in groups['k8s_cluster']
+  tags:
+    - network
+    - calico
+    - bootstrap-os
+
 - name: Create local volume provisioner directories
   file:
     path: "{{ local_volume_provisioner_storage_classes[item].host_dir }}"