diff --git a/library/kube.py b/library/kube.py
index fdc783fff31b1ef089491c20a2f75f74297cdc8a..77f7e6e35e426a031530addae987fbef5653bfb5 100644
--- a/library/kube.py
+++ b/library/kube.py
@@ -270,7 +270,6 @@ def main():
 
     manager = KubeManager(module)
     state = module.params.get('state')
-
     if state == 'present':
         result = manager.create()
 
diff --git a/roles/dnsmasq/tasks/main.yml b/roles/dnsmasq/tasks/main.yml
index a06afbdce4b36a3b31a4cfb7b8c497dee7c9ac71..607e6df51e87652c3fab8e8d0b2cd5752d337213 100644
--- a/roles/dnsmasq/tasks/main.yml
+++ b/roles/dnsmasq/tasks/main.yml
@@ -95,7 +95,7 @@
     kubectl: "{{bin_dir}}/kubectl"
     resource: "{{item.item.type}}"
     filename: "{{kube_config_dir}}/{{item.item.file}}"
-    state: "{{item.changed | ternary('latest','present') }}"
+    state: "latest"
   with_items: "{{ manifests.results }}"
   delegate_to: "{{ groups['kube-master'][0] }}"
   run_once: true
diff --git a/roles/kubernetes-apps/ansible/tasks/main.yml b/roles/kubernetes-apps/ansible/tasks/main.yml
index 4f9b6ef1dc290639a8a5b0acd0c7e3752c22eafc..3c986970cc43ed12430745fc00a7279e7d218926 100644
--- a/roles/kubernetes-apps/ansible/tasks/main.yml
+++ b/roles/kubernetes-apps/ansible/tasks/main.yml
@@ -51,10 +51,12 @@
     kubectl: "{{bin_dir}}/kubectl"
     resource: "{{item.item.type}}"
     filename: "{{kube_config_dir}}/{{item.item.file}}"
-    state: "{{item.changed | ternary('latest','present') }}"
+    state: "latest"
   with_items: "{{ manifests.results }}"
-  failed_when: manifests|failed and "Error from server (AlreadyExists)" not in manifests.msg
-  when: dns_mode != 'none' and inventory_hostname == groups['kube-master'][0]
+  when:
+    - dns_mode != 'none'
+    - inventory_hostname == groups['kube-master'][0]
+    - not item|skipped
   tags: dnsmasq
 
 - name: Kubernetes Apps | Netchecker
diff --git a/roles/kubernetes-apps/ansible/tasks/netchecker.yml b/roles/kubernetes-apps/ansible/tasks/netchecker.yml
index 208adedc2844f531d46291c3ee8a12296ef11b65..a74a4dc87a3a8f330bd40805ce30bed174e6c255 100644
--- a/roles/kubernetes-apps/ansible/tasks/netchecker.yml
+++ b/roles/kubernetes-apps/ansible/tasks/netchecker.yml
@@ -32,7 +32,6 @@
     kubectl: "{{bin_dir}}/kubectl"
     resource: "{{item.item.type}}"
     filename: "{{kube_config_dir}}/{{item.item.file}}"
-    state: "{{item.changed | ternary('latest','present') }}"
+    state: "latest"
   with_items: "{{ manifests.results }}"
-  failed_when: manifests|failed and "Error from server (AlreadyExists)" not in manifests.msg
-  when: inventory_hostname == groups['kube-master'][0]
+  when: inventory_hostname == groups['kube-master'][0] and not item|skipped
diff --git a/roles/kubernetes-apps/ansible/templates/kubedns-autoscaler.yml.j2 b/roles/kubernetes-apps/ansible/templates/kubedns-autoscaler.yml.j2
index fb87d5a50bc7a0545812c26e6d3e3af67b550835..df92ee6156bc9411445eb3b402854d2f06922b6f 100644
--- a/roles/kubernetes-apps/ansible/templates/kubedns-autoscaler.yml.j2
+++ b/roles/kubernetes-apps/ansible/templates/kubedns-autoscaler.yml.j2
@@ -27,17 +27,13 @@ spec:
     metadata:
       labels:
         k8s-app: kubedns-autoscaler
-      annotations:
-        scheduler.alpha.kubernetes.io/critical-pod: ''
     spec:
+      tolerations:
+        - effect: NoSchedule
+          operator: Exists
       containers:
       - name: autoscaler
         image: "{{ kubednsautoscaler_image_repo }}:{{ kubednsautoscaler_image_tag }}"
-        tolerations:
-          - effect: NoSchedule
-            operator: Exists
-          - effect: CriticalAddonsOnly
-            operator: exists
         resources:
           requests:
             cpu: "20m"
diff --git a/roles/kubernetes-apps/efk/kibana/tasks/main.yml b/roles/kubernetes-apps/efk/kibana/tasks/main.yml
index 4c14d19453d0950422aebe0f54ee6e3036b4b680..ea85682864be14591cca46f1a21dc4f7a8bbf85d 100644
--- a/roles/kubernetes-apps/efk/kibana/tasks/main.yml
+++ b/roles/kubernetes-apps/efk/kibana/tasks/main.yml
@@ -12,7 +12,7 @@
     name: "kibana-logging"
     namespace: "{{system_namespace}}"
     resource: "deployment"
-    state: "{{ item | ternary('latest','present') }}"
+    state: "latest"
   with_items: "{{ kibana_deployment_manifest.changed }}"
   run_once: true
 
@@ -29,6 +29,6 @@
     name: "kibana-logging"
     namespace: "{{system_namespace}}"
     resource: "svc"
-    state: "{{ item | ternary('latest','present') }}"
+    state: "latest"
   with_items: "{{ kibana_service_manifest.changed }}"
   run_once: true
diff --git a/roles/kubernetes-apps/helm/tasks/main.yml b/roles/kubernetes-apps/helm/tasks/main.yml
index 2d26c5a0fd31c737cdbe4e6b4ec7966a9fc6d42c..d01211e2f527a41cf0203941e91c58357d6624c3 100644
--- a/roles/kubernetes-apps/helm/tasks/main.yml
+++ b/roles/kubernetes-apps/helm/tasks/main.yml
@@ -27,9 +27,8 @@
     kubectl: "{{bin_dir}}/kubectl"
     resource: "{{item.item.type}}"
     filename: "{{kube_config_dir}}/{{item.item.file}}"
-    state: "{{item.changed | ternary('latest','present') }}"
+    state: "latest"
   with_items: "{{ manifests.results }}"
-  failed_when: manifests|failed and "Error from server (AlreadyExists)" not in manifests.msg
   when: dns_mode != 'none' and inventory_hostname == groups['kube-master'][0] and rbac_enabled
 
 - name: Helm | Install/upgrade helm
diff --git a/roles/kubernetes-apps/network_plugin/calico/tasks/main.yml b/roles/kubernetes-apps/network_plugin/calico/tasks/main.yml
index 5061c5c98ee40a4d76296514796108744612e6c1..f17e45c7abd7d16fb8a7f1f77e25de4b0965324e 100644
--- a/roles/kubernetes-apps/network_plugin/calico/tasks/main.yml
+++ b/roles/kubernetes-apps/network_plugin/calico/tasks/main.yml
@@ -6,5 +6,6 @@
     kubectl: "{{bin_dir}}/kubectl"
     resource: "{{item.item.type}}"
     filename: "{{kube_config_dir}}/{{item.item.file}}"
-    state: "{{item.changed | ternary('latest','present') }}"
+    state: "latest"
   with_items: "{{ calico_node_manifests.results }}"
+  when: inventory_hostname == groups['kube-master'][0] and not item|skipped
diff --git a/roles/kubernetes-apps/network_plugin/canal/tasks/main.yml b/roles/kubernetes-apps/network_plugin/canal/tasks/main.yml
index 6f3bb4d85e6760ceaf4762fa9af990d22cde36c3..24607249f1fdb9c10384679cc0681c29df642a55 100644
--- a/roles/kubernetes-apps/network_plugin/canal/tasks/main.yml
+++ b/roles/kubernetes-apps/network_plugin/canal/tasks/main.yml
@@ -6,6 +6,6 @@
     kubectl: "{{bin_dir}}/kubectl"
     resource: "{{item.item.type}}"
     filename: "{{kube_config_dir}}/{{item.item.file}}"
-    state: "{{item.changed | ternary('latest','present') }}"
+    state: "latest"
   with_items: "{{ canal_manifests.results }}"
   when: inventory_hostname == groups['kube-master'][0]
diff --git a/roles/kubernetes-apps/network_plugin/flannel/tasks/main.yml b/roles/kubernetes-apps/network_plugin/flannel/tasks/main.yml
index cfe931375870520b38c5a1ab286babd7121ae823..607c7d61774fc21b184934eeaf9e4bd428992f05 100644
--- a/roles/kubernetes-apps/network_plugin/flannel/tasks/main.yml
+++ b/roles/kubernetes-apps/network_plugin/flannel/tasks/main.yml
@@ -11,7 +11,7 @@
     filename: "{{ kube_config_dir }}/cni-flannel.yml"
     resource: "ds"
     namespace: "{{system_namespace}}"
-    state: "{{ item | ternary('latest','present') }}"
+    state: "latest"
   with_items: "{{ flannel_manifest.changed }}"
   when: inventory_hostname == groups['kube-master'][0]
 
@@ -19,4 +19,4 @@
   wait_for:
     path: /run/flannel/subnet.env
     delay: 5
-    timeout: 600
\ No newline at end of file
+    timeout: 600
diff --git a/roles/kubernetes-apps/network_plugin/weave/tasks/main.yml b/roles/kubernetes-apps/network_plugin/weave/tasks/main.yml
index c25702b443050995af0e4f703a056137b5870a1c..3b01d0e66b4e4e56a2f51596964818abb86c3f3f 100644
--- a/roles/kubernetes-apps/network_plugin/weave/tasks/main.yml
+++ b/roles/kubernetes-apps/network_plugin/weave/tasks/main.yml
@@ -17,8 +17,7 @@
     filename: "{{ kube_config_dir }}/weave-net.yml"
     resource: "ds"
     namespace: "{{system_namespace}}"
-    state: "{{ item | ternary('latest','present') }}"
-  with_items: "{{ weave_manifest.changed }}"
+    state: "latest"
   when: inventory_hostname == groups['kube-master'][0]
 
 - name: "Weave | wait for weave to become available"
diff --git a/roles/kubernetes-apps/policy_controller/calico/tasks/main.yml b/roles/kubernetes-apps/policy_controller/calico/tasks/main.yml
index 79bb535b7adec8ef04a213ddb053b36d40f0dfae..a6b1e18c1d728e7d52822d4e2462b775ac613610 100644
--- a/roles/kubernetes-apps/policy_controller/calico/tasks/main.yml
+++ b/roles/kubernetes-apps/policy_controller/calico/tasks/main.yml
@@ -44,6 +44,6 @@
     kubectl: "{{bin_dir}}/kubectl"
     resource: "{{item.item.type}}"
     filename: "{{kube_config_dir}}/{{item.item.file}}"
-    state: "{{item.changed | ternary('latest','present') }}"
+    state: "latest"
   with_items: "{{ calico_policy_manifests.results }}"
-  when: inventory_hostname == groups['kube-master'][0]
+  when: inventory_hostname == groups['kube-master'][0] and not item|skipped