diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8dad6176fbcf547677e6613cdcd427bce85e794a..74fe6ec18c7ea63da01b14d18ff15219a191087f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -98,6 +98,9 @@ before_script:
     ## Test Master API
     - ansible-playbook -i ${ANSIBLE_INVENTORY} -e ansible_python_interpreter=${PYPATH} -u $SSH_USER -e ansible_ssh_user=$SSH_USER $SSH_ARGS -b --become-user=root --limit "all:!fake_hosts" tests/testcases/010_check-apiserver.yml $LOG_LEVEL
 
+    ## Test that all pods are Running
+    - ansible-playbook -i ${ANSIBLE_INVENTORY} -e ansible_python_interpreter=${PYPATH} -u $SSH_USER -e ansible_ssh_user=$SSH_USER $SSH_ARGS -b --become-user=root --limit "all:!fake_hosts" tests/testcases/015_check-pods-running.yml $LOG_LEVEL
+
     ## Ping the between 2 pod
     - ansible-playbook -i ${ANSIBLE_INVENTORY} -e ansible_python_interpreter=${PYPATH} -u $SSH_USER -e ansible_ssh_user=$SSH_USER $SSH_ARGS -b --become-user=root --limit "all:!fake_hosts" tests/testcases/030_check-network.yml $LOG_LEVEL
 
diff --git a/tests/files/packet_ubuntu18-flannel-aio.yml b/tests/files/packet_ubuntu18-flannel-aio.yml
index ad354efc496020201ce9a309e9a307542970e514..97421aa603f18bdec6fbc6bc95aa4f4dbbf89ab1 100644
--- a/tests/files/packet_ubuntu18-flannel-aio.yml
+++ b/tests/files/packet_ubuntu18-flannel-aio.yml
@@ -6,4 +6,4 @@ mode: aio
 # Kubespray settings
 kube_network_plugin: flannel
 deploy_netchecker: true
-kubedns_min_replicas: 1
+dns_min_replicas: 1
diff --git a/tests/testcases/015_check-pods-running.yml b/tests/testcases/015_check-pods-running.yml
new file mode 100644
index 0000000000000000000000000000000000000000..c1e4a6629307d3b2581d0cc92d8d59460aa97413
--- /dev/null
+++ b/tests/testcases/015_check-pods-running.yml
@@ -0,0 +1,40 @@
+---
+- hosts: kube-master[0]
+  tasks:
+
+  - name: Force binaries directory for Container Linux by CoreOS
+    set_fact:
+      bin_dir: "/opt/bin"
+    when: ansible_os_family in ["CoreOS", "Container Linux by CoreOS"]
+
+  - set_fact:
+      bin_dir: "/usr/local/bin"
+    when: not ansible_os_family in ["CoreOS", "Container Linux by CoreOS"]
+
+  - name: Check kubectl output
+    shell: "{{bin_dir}}/kubectl get pods --all-namespaces -owide"
+    register: get_pods
+    no_log: true
+
+  - debug: msg="{{get_pods.stdout.split('\n')}}"
+
+  - name: Check that all pods are running and ready
+    shell: "{{bin_dir}}/kubectl get pods --all-namespaces --no-headers -o yaml"
+    register: run_pods_log
+    until:
+    # Check that all pods are running
+    - '(run_pods_log.stdout | from_yaml)["items"] | map(attribute = "status.phase") | unique | list == ["Running"]'
+    # Check that all pods are ready
+    - '(run_pods_log.stdout | from_yaml)["items"] | map(attribute = "status.containerStatuses") | map("map", attribute = "ready") | map("min") | min'
+    retries: 18
+    delay: 10
+    failed_when: false
+    no_log: true
+
+  - name: Check kubectl output
+    shell: "{{bin_dir}}/kubectl get pods --all-namespaces -owide"
+    register: get_pods
+    no_log: true
+
+  - debug: msg="{{get_pods.stdout.split('\n')}}"
+    failed_when: not run_pods_log is success
diff --git a/tests/testcases/030_check-network.yml b/tests/testcases/030_check-network.yml
index c4e8c105b3873f72dfc9cef13b35d7f5e99f2d74..14b4a5564363424d76622cc053690a48c768b25c 100644
--- a/tests/testcases/030_check-network.yml
+++ b/tests/testcases/030_check-network.yml
@@ -12,16 +12,17 @@
       bin_dir: "/usr/local/bin"
     when: not ansible_os_family in ["CoreOS", "Container Linux by CoreOS"]
 
-
-  - name: Wait for pods to be ready
-    shell: "{{bin_dir}}/kubectl get pods -n test"
-    register: pods
+  - name: Check that all pods are running and ready
+    shell: "{{bin_dir}}/kubectl get pods --namespace test --no-headers -o yaml"
+    register: run_pods_log
     until:
-    - '"ContainerCreating" not in pods.stdout'
-    - '"Pending" not in pods.stdout'
-    - '"Terminating" not in pods.stdout'
-    retries: 60
-    delay: 2
+    # Check that all pods are running
+    - '(run_pods_log.stdout | from_yaml)["items"] | map(attribute = "status.phase") | unique | list == ["Running"]'
+    # Check that all pods are ready
+    - '(run_pods_log.stdout | from_yaml)["items"] | map(attribute = "status.containerStatuses") | map("map", attribute = "ready") | map("min") | min'
+    retries: 18
+    delay: 10
+    failed_when: false
     no_log: true
 
   - name: Get pod names