diff --git a/roles/kubernetes-apps/ansible/templates/netchecker-agent-ds.yml.j2 b/roles/kubernetes-apps/ansible/templates/netchecker-agent-ds.yml.j2
index 6208e89644b28582714ded37bc53b42d7e730a28..47dbf70a3c0d4e47a4040486d03694a45222e483 100644
--- a/roles/kubernetes-apps/ansible/templates/netchecker-agent-ds.yml.j2
+++ b/roles/kubernetes-apps/ansible/templates/netchecker-agent-ds.yml.j2
@@ -24,6 +24,7 @@ spec:
       containers:
         - name: netchecker-agent
           image: "{{ netcheck_agent_image_repo }}:{{ netcheck_agent_image_tag }}"
+          imagePullPolicy: {{ k8s_image_pull_policy }}
           env:
             - name: MY_POD_NAME
               valueFrom:
@@ -38,7 +39,6 @@ spec:
             - "-alsologtostderr=true"
             - "-serverendpoint=netchecker-service:8081"
             - "-reportinterval={{ agent_report_interval }}"
-          imagePullPolicy: {{ k8s_image_pull_policy }}
           resources:
             limits:
               cpu: {{ netchecker_agent_cpu_limit }}
diff --git a/roles/kubernetes-apps/ansible/templates/netchecker-agent-hostnet-ds.yml.j2 b/roles/kubernetes-apps/ansible/templates/netchecker-agent-hostnet-ds.yml.j2
index bbf6d99d6656fb9f25031ce8c09fc7726bd395aa..8b2e51a42146aaa2d36df6c817d9b2eef5b89e30 100644
--- a/roles/kubernetes-apps/ansible/templates/netchecker-agent-hostnet-ds.yml.j2
+++ b/roles/kubernetes-apps/ansible/templates/netchecker-agent-hostnet-ds.yml.j2
@@ -26,6 +26,7 @@ spec:
       containers:
         - name: netchecker-agent
           image: "{{ netcheck_agent_image_repo }}:{{ netcheck_agent_image_tag }}"
+          imagePullPolicy: {{ k8s_image_pull_policy }}
           env:
             - name: MY_POD_NAME
               valueFrom:
@@ -40,7 +41,6 @@ spec:
             - "-alsologtostderr=true"
             - "-serverendpoint=netchecker-service:8081"
             - "-reportinterval={{ agent_report_interval }}"
-          imagePullPolicy: {{ k8s_image_pull_policy }}
           resources:
             limits:
               cpu: {{ netchecker_agent_cpu_limit }}
diff --git a/roles/kubernetes-apps/ansible/templates/netchecker-server-deployment.yml.j2 b/roles/kubernetes-apps/ansible/templates/netchecker-server-deployment.yml.j2
index 53f6c48078264d718092e79fc6f3874decb684b4..0be97e0db9d589319109e579aaa175230108005b 100644
--- a/roles/kubernetes-apps/ansible/templates/netchecker-server-deployment.yml.j2
+++ b/roles/kubernetes-apps/ansible/templates/netchecker-server-deployment.yml.j2
@@ -20,7 +20,6 @@ spec:
       containers:
         - name: netchecker-server
           image: "{{ netcheck_server_image_repo }}:{{ netcheck_server_image_tag }}"
-          env:
           imagePullPolicy: {{ k8s_image_pull_policy }}
           resources:
             limits:
diff --git a/roles/kubernetes-apps/csi_driver/aws_ebs/templates/aws-ebs-csi-controllerservice.yml.j2 b/roles/kubernetes-apps/csi_driver/aws_ebs/templates/aws-ebs-csi-controllerservice.yml.j2
index 947c0d31068220a8f455cd77a68bf732e38dacab..f570cf2b3021ab598cb0b2d5ee978174a03596e8 100644
--- a/roles/kubernetes-apps/csi_driver/aws_ebs/templates/aws-ebs-csi-controllerservice.yml.j2
+++ b/roles/kubernetes-apps/csi_driver/aws_ebs/templates/aws-ebs-csi-controllerservice.yml.j2
@@ -103,7 +103,7 @@ spec:
 {% if aws_ebs_csi_enable_volume_resizing %}
         - name: csi-resizer
           image: {{ csi_resizer_image_repo }}:{{ csi_resizer_image_tag }}
-          imagePullPolicy: Always
+          imagePullPolicy: {{ k8s_image_pull_policy }}
           args:
             - --csi-address=$(ADDRESS)
             - --v=5
diff --git a/roles/kubernetes-apps/csi_driver/azuredisk/templates/azure-csi-azuredisk-controller.yml.j2 b/roles/kubernetes-apps/csi_driver/azuredisk/templates/azure-csi-azuredisk-controller.yml.j2
index 3b3b7e2b5c8e7988dd0276309fc48ce509b04d91..ab7a540f89c5bcf4e80f4594c5e4360cdbeb5e70 100644
--- a/roles/kubernetes-apps/csi_driver/azuredisk/templates/azure-csi-azuredisk-controller.yml.j2
+++ b/roles/kubernetes-apps/csi_driver/azuredisk/templates/azure-csi-azuredisk-controller.yml.j2
@@ -27,6 +27,7 @@ spec:
       containers:
         - name: csi-provisioner
           image: {{ azure_csi_image_repo }}/csi-provisioner:{{ azure_csi_provisioner_image_tag }}
+          imagePullPolicy: {{ k8s_image_pull_policy }}
           args:
             - "--provisioner=disk.csi.azure.com"
             - "--feature-gates=Topology=true"
@@ -39,7 +40,6 @@ spec:
           env:
             - name: ADDRESS
               value: /csi/csi.sock
-          imagePullPolicy: IfNotPresent
           volumeMounts:
             - mountPath: /csi
               name: socket-dir
@@ -52,6 +52,7 @@ spec:
               memory: 20Mi
         - name: csi-attacher
           image: {{ azure_csi_image_repo }}/csi-attacher:{{ azure_csi_attacher_image_tag }}
+          imagePullPolicy: {{ k8s_image_pull_policy }}
           args:
             - "-v=5"
             - "-csi-address=$(ADDRESS)"
@@ -61,7 +62,6 @@ spec:
           env:
             - name: ADDRESS
               value: /csi/csi.sock
-          imagePullPolicy: IfNotPresent
           volumeMounts:
             - mountPath: /csi
               name: socket-dir
@@ -148,6 +148,7 @@ spec:
               memory: 20Mi
         - name: azuredisk
           image: {{ azure_csi_plugin_image_repo }}/azuredisk-csi:{{ azure_csi_plugin_image_tag }}
+          imagePullPolicy: {{ k8s_image_pull_policy }}
           args:
             - "--v=5"
             - "--endpoint=$(CSI_ENDPOINT)"
@@ -172,7 +173,6 @@ spec:
               value: "/etc/kubernetes/azure.json"
             - name: CSI_ENDPOINT
               value: unix:///csi/csi.sock
-          imagePullPolicy: IfNotPresent
           volumeMounts:
             - mountPath: /csi
               name: socket-dir
diff --git a/roles/kubernetes-apps/csi_driver/azuredisk/templates/azure-csi-azuredisk-node.yml.j2 b/roles/kubernetes-apps/csi_driver/azuredisk/templates/azure-csi-azuredisk-node.yml.j2
index 45046a021a272eecea23c46fb4ff6d7c7f15d16a..45e46718f267697975fe728bfbfbe3bcb8adcbbb 100644
--- a/roles/kubernetes-apps/csi_driver/azuredisk/templates/azure-csi-azuredisk-node.yml.j2
+++ b/roles/kubernetes-apps/csi_driver/azuredisk/templates/azure-csi-azuredisk-node.yml.j2
@@ -19,11 +19,11 @@ spec:
       priorityClassName: system-node-critical
       containers:
         - name: liveness-probe
-          imagePullPolicy: IfNotPresent
           volumeMounts:
             - mountPath: /csi
               name: socket-dir
           image: {{ azure_csi_image_repo }}/livenessprobe:{{ azure_csi_livenessprobe_image_tag }}
+          imagePullPolicy: {{ k8s_image_pull_policy }}
           args:
             - --csi-address=/csi/csi.sock
             - --connection-timeout=3s
@@ -65,6 +65,7 @@ spec:
               memory: 20Mi
         - name: azuredisk
           image: {{ azure_csi_plugin_image_repo }}/azuredisk-csi:{{ azure_csi_plugin_image_tag }}
+          imagePullPolicy: {{ k8s_image_pull_policy }}
           args:
             - "--v=5"
             - "--endpoint=$(CSI_ENDPOINT)"
@@ -95,7 +96,6 @@ spec:
                 fieldRef:
                   apiVersion: v1
                   fieldPath: spec.nodeName
-          imagePullPolicy: IfNotPresent
           securityContext:
             privileged: true
           volumeMounts:
diff --git a/roles/kubernetes-apps/csi_driver/cinder/templates/cinder-csi-controllerplugin.yml.j2 b/roles/kubernetes-apps/csi_driver/cinder/templates/cinder-csi-controllerplugin.yml.j2
index ade276450f29f79fcba91d4a03a881eea0630f1b..ad7abefbc5179fda94f8685765cf69261fe2500f 100644
--- a/roles/kubernetes-apps/csi_driver/cinder/templates/cinder-csi-controllerplugin.yml.j2
+++ b/roles/kubernetes-apps/csi_driver/cinder/templates/cinder-csi-controllerplugin.yml.j2
@@ -21,6 +21,7 @@ spec:
       containers:
         - name: csi-attacher
           image: {{ csi_attacher_image_repo }}:{{ csi_attacher_image_tag }}
+          imagePullPolicy: {{ k8s_image_pull_policy }}
           args:
             - "--v=5"
             - "--csi-address=$(ADDRESS)"
@@ -32,12 +33,12 @@ spec:
           env:
             - name: ADDRESS
               value: /var/lib/csi/sockets/pluginproxy/csi.sock
-          imagePullPolicy: "IfNotPresent"
           volumeMounts:
             - name: socket-dir
               mountPath: /var/lib/csi/sockets/pluginproxy/
         - name: csi-provisioner
           image: {{ csi_provisioner_image_repo }}:{{ csi_provisioner_image_tag }}
+          imagePullPolicy: {{ k8s_image_pull_policy }}
           args:
             - "--csi-address=$(ADDRESS)"
 {% if cinder_topology is defined and cinder_topology %}
@@ -51,12 +52,12 @@ spec:
           env:
             - name: ADDRESS
               value: /var/lib/csi/sockets/pluginproxy/csi.sock
-          imagePullPolicy: "IfNotPresent"
           volumeMounts:
             - name: socket-dir
               mountPath: /var/lib/csi/sockets/pluginproxy/
         - name: csi-snapshotter
           image: {{ csi_snapshotter_image_repo }}:{{ csi_snapshotter_image_tag }}
+          imagePullPolicy: {{ k8s_image_pull_policy }}
           args:
             - "--csi-address=$(ADDRESS)"
 {% if cinder_csi_controller_replicas is defined and cinder_csi_controller_replicas > 1 %}
@@ -66,12 +67,12 @@ spec:
           env:
             - name: ADDRESS
               value: /var/lib/csi/sockets/pluginproxy/csi.sock
-          imagePullPolicy: {{ k8s_image_pull_policy }}
           volumeMounts:
             - mountPath: /var/lib/csi/sockets/pluginproxy/
               name: socket-dir
         - name: csi-resizer
           image: {{ csi_resizer_image_repo }}:{{ csi_resizer_image_tag }}
+          imagePullPolicy: {{ k8s_image_pull_policy }}
           args:
             - "--csi-address=$(ADDRESS)"
 {% if cinder_csi_controller_replicas is defined and cinder_csi_controller_replicas > 1 %}
@@ -81,13 +82,13 @@ spec:
           env:
             - name: ADDRESS
               value: /var/lib/csi/sockets/pluginproxy/csi.sock
-          imagePullPolicy: "IfNotPresent"
           volumeMounts:
             - name: socket-dir
               mountPath: /var/lib/csi/sockets/pluginproxy/
         - name: cinder-csi-plugin
           image: {{ cinder_csi_plugin_image_repo }}:{{ cinder_csi_plugin_image_tag }}
-          args :
+          imagePullPolicy: {{ k8s_image_pull_policy }}
+          args:
             - /bin/cinder-csi-plugin
             - "--nodeid=$(NODE_ID)"
             - "--endpoint=$(CSI_ENDPOINT)"
@@ -104,7 +105,6 @@ spec:
               value: /etc/config/cloud.conf
             - name: CLUSTER_NAME
               value: kubernetes
-          imagePullPolicy: "IfNotPresent"
           volumeMounts:
             - name: socket-dir
               mountPath: /csi
diff --git a/roles/kubernetes-apps/csi_driver/cinder/templates/cinder-csi-nodeplugin.yml.j2 b/roles/kubernetes-apps/csi_driver/cinder/templates/cinder-csi-nodeplugin.yml.j2
index b9cefa0c76b8fac25313b4ea7e6903aedae8ed33..5787b7cf3c8442445f0e538fc2d66f4c7cca9d1d 100644
--- a/roles/kubernetes-apps/csi_driver/cinder/templates/cinder-csi-nodeplugin.yml.j2
+++ b/roles/kubernetes-apps/csi_driver/cinder/templates/cinder-csi-nodeplugin.yml.j2
@@ -20,6 +20,7 @@ spec:
       containers:
         - name: node-driver-registrar
           image: {{ csi_node_driver_registrar_image_repo }}:{{ csi_node_driver_registrar_image_tag }}
+          imagePullPolicy: {{ k8s_image_pull_policy }}
           args:
             - "--csi-address=$(ADDRESS)"
             - "--kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)"
@@ -36,7 +37,6 @@ spec:
               valueFrom:
                 fieldRef:
                   fieldPath: spec.nodeName
-          imagePullPolicy: "IfNotPresent"
           volumeMounts:
             - name: socket-dir
               mountPath: /csi
@@ -49,7 +49,8 @@ spec:
               add: ["SYS_ADMIN"]
             allowPrivilegeEscalation: true
           image: {{ cinder_csi_plugin_image_repo }}:{{ cinder_csi_plugin_image_tag }}
-          args :
+          imagePullPolicy: {{ k8s_image_pull_policy }}
+          args:
             - /bin/cinder-csi-plugin
             - "--nodeid=$(NODE_ID)"
             - "--endpoint=$(CSI_ENDPOINT)"
@@ -63,7 +64,6 @@ spec:
               value: unix://csi/csi.sock
             - name: CLOUD_CONFIG
               value: /etc/config/cloud.conf
-          imagePullPolicy: "IfNotPresent"
           volumeMounts:
             - name: socket-dir
               mountPath: /csi
diff --git a/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-controller-ss.yml.j2 b/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-controller-ss.yml.j2
index a88a23bd507c434d528e81ca3a127357227faed6..a11d635d75b0b0242804d973fad0faa9a3eb100e 100644
--- a/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-controller-ss.yml.j2
+++ b/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-controller-ss.yml.j2
@@ -40,13 +40,13 @@ spec:
               name: socket-dir
         - name: vsphere-csi-controller
           image: {{ gcr_image_repo }}/cloud-provider-vsphere/csi/release/driver:{{ vsphere_csi_controller }}
+          imagePullPolicy: {{ k8s_image_pull_policy }}
           lifecycle:
             preStop:
               exec:
                 command: ["/bin/sh", "-c", "rm -rf /var/lib/csi/sockets/pluginproxy/csi.vsphere.vmware.com"]
           args:
             - "--v=4"
-          imagePullPolicy: "Always"
           env:
             - name: CSI_ENDPOINT
               value: unix:///var/lib/csi/sockets/pluginproxy/csi.sock
@@ -84,9 +84,9 @@ spec:
               name: socket-dir
         - name: vsphere-syncer
           image: {{ gcr_image_repo }}/cloud-provider-vsphere/csi/release/syncer:{{ vsphere_syncer_image_tag }}
+          imagePullPolicy: {{ k8s_image_pull_policy }}
           args:
             - "--v=2"
-          imagePullPolicy: "Always"
           env:
             - name: FULL_SYNC_INTERVAL_MINUTES
               value: "30"
diff --git a/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-node.yml.j2 b/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-node.yml.j2
index 24c39abfeaaa0947f30c3b6fd402ffce8ae4d390..b9e37697ce7d73c87b759f6d5259a4db9cc56c5d 100644
--- a/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-node.yml.j2
+++ b/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-node.yml.j2
@@ -41,7 +41,7 @@ spec:
               mountPath: /registration
         - name: vsphere-csi-node
           image: {{ gcr_image_repo }}/cloud-provider-vsphere/csi/release/driver:{{ vsphere_csi_driver_image_tag }}
-          imagePullPolicy: "Always"
+          imagePullPolicy: {{ k8s_image_pull_policy }}
           env:
             - name: NODE_NAME
               valueFrom:
diff --git a/roles/network_plugin/cilium/templates/cilium-deploy.yml.j2 b/roles/network_plugin/cilium/templates/cilium-deploy.yml.j2
index c052e9e16eb651e4976a5e52a297d2e32aa7f93d..d379477ec35147274473e8aecff47057748be38a 100644
--- a/roles/network_plugin/cilium/templates/cilium-deploy.yml.j2
+++ b/roles/network_plugin/cilium/templates/cilium-deploy.yml.j2
@@ -85,7 +85,7 @@ spec:
                   name: cilium-aws
                   optional: true
           image: "{{ cilium_operator_image_repo }}:{{ cilium_operator_image_tag }}"
-          imagePullPolicy: IfNotPresent
+          imagePullPolicy: {{ k8s_image_pull_policy }}
           name: cilium-operator
           livenessProbe:
             httpGet:
diff --git a/roles/network_plugin/cilium/templates/cilium-ds.yml.j2 b/roles/network_plugin/cilium/templates/cilium-ds.yml.j2
index 370dba2257afd49625baa2e35846810a81e158fe..9cdc04cba5952cea3f5f78828ce36a2a3fc11c7f 100755
--- a/roles/network_plugin/cilium/templates/cilium-ds.yml.j2
+++ b/roles/network_plugin/cilium/templates/cilium-ds.yml.j2
@@ -46,7 +46,7 @@ spec:
         - name: CILIUM_CLUSTERMESH_CONFIG
           value: /var/lib/cilium/clustermesh/
         image: "{{cilium_image_repo}}:{{cilium_image_tag}}"
-        imagePullPolicy: IfNotPresent
+        imagePullPolicy: {{ k8s_image_pull_policy }}
         resources:
           limits:
             cpu: {{ cilium_cpu_limit }}
@@ -162,7 +162,7 @@ spec:
               name: cilium-config
               optional: true
         image: "{{cilium_init_image_repo}}:{{cilium_init_image_tag}}"
-        imagePullPolicy: IfNotPresent
+        imagePullPolicy: {{ k8s_image_pull_policy }}
         name: clean-cilium-state
         securityContext:
           capabilities:
diff --git a/roles/network_plugin/kube-ovn/templates/cni-kube-ovn.yml.j2 b/roles/network_plugin/kube-ovn/templates/cni-kube-ovn.yml.j2
index 79f1fc671a9002d6f12c855d40f7035090a1e815..426b9b9e5007e295ac28ced1ba8c6e9824332a11 100644
--- a/roles/network_plugin/kube-ovn/templates/cni-kube-ovn.yml.j2
+++ b/roles/network_plugin/kube-ovn/templates/cni-kube-ovn.yml.j2
@@ -217,8 +217,8 @@ spec:
       containers:
         - name: pinger
           image: {{ kube_ovn_container_image_repo }}:{{ kube_ovn_container_image_tag }}
-          command: ["/kube-ovn/kube-ovn-pinger", "--external-address=114.114.114.114"]
           imagePullPolicy: {{ k8s_image_pull_policy }}
+          command: ["/kube-ovn/kube-ovn-pinger", "--external-address=114.114.114.114"]
           securityContext:
             runAsUser: 0
             privileged: false
diff --git a/roles/network_plugin/kube-router/templates/kube-router.yml.j2 b/roles/network_plugin/kube-router/templates/kube-router.yml.j2
index 20816cd4e6145b6815faba0d2613a892aab53a13..f1a46e87017208a389a40535d9f9248b4f94e7f8 100644
--- a/roles/network_plugin/kube-router/templates/kube-router.yml.j2
+++ b/roles/network_plugin/kube-router/templates/kube-router.yml.j2
@@ -33,7 +33,7 @@ spec:
       containers:
       - name: kube-router
         image: {{ kube_router_image_repo }}:{{ kube_router_image_tag }}
-        imagePullPolicy: IfNotPresent
+        imagePullPolicy: {{ k8s_image_pull_policy }}
         args:
         - --run-router={{ kube_router_run_router | bool }}
         - --run-firewall={{ kube_router_run_firewall | bool }}