diff --git a/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/cli/K8sSyncStateCommand.java b/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/cli/K8sSyncStateCommand.java
index 9b16795..1d39b30 100644
--- a/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/cli/K8sSyncStateCommand.java
+++ b/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/cli/K8sSyncStateCommand.java
@@ -92,7 +92,7 @@
 
         print("Synchronizing kubernetes services");
         print(SERVICE_FORMAT, "Name", "Cluster IP", "Ports");
-        client.services().list().getItems().forEach(svc -> {
+        client.services().inAnyNamespace().list().getItems().forEach(svc -> {
             if (serviceAdminService.service(svc.getMetadata().getUid()) != null) {
                 serviceAdminService.updateService(svc);
             } else {
@@ -103,7 +103,7 @@
 
         print("\nSynchronizing kubernetes endpoints");
         print(ENDPOINTS_FORMAT, "Name", "IP Addresses", "Ports");
-        client.endpoints().list().getItems().forEach(ep -> {
+        client.endpoints().inAnyNamespace().list().getItems().forEach(ep -> {
             if (endpointsAdminService.endpoints(ep.getMetadata().getUid()) != null) {
                 endpointsAdminService.updateEndpoints(ep);
             } else {
@@ -114,7 +114,7 @@
 
         print("\nSynchronizing kubernetes pods");
         print(POD_FORMAT, "Name", "Namespace", "IP", "Containers");
-        client.pods().list().getItems().forEach(pod -> {
+        client.pods().inAnyNamespace().list().getItems().forEach(pod -> {
             if (podAdminService.pod(pod.getMetadata().getUid()) != null) {
                 podAdminService.updatePod(pod);
             } else {
@@ -128,7 +128,7 @@
 
         print("\nSynchronizing kubernetes ingresses");
         print(INGRESS_FORMAT, "Name", "Namespace", "LB Addresses");
-        client.extensions().ingresses().list().getItems().forEach(ingress -> {
+        client.extensions().ingresses().inAnyNamespace().list().getItems().forEach(ingress -> {
             if (ingressAdminService.ingress(ingress.getMetadata().getUid()) != null) {
                 ingressAdminService.updateIngress(ingress);
             } else {
diff --git a/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/impl/K8sEndpointsWatcher.java b/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/impl/K8sEndpointsWatcher.java
index ecc35fe..0b56de3 100644
--- a/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/impl/K8sEndpointsWatcher.java
+++ b/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/impl/K8sEndpointsWatcher.java
@@ -129,7 +129,7 @@
             KubernetesClient client = k8sClient(k8sApiConfigService);
 
             if (client != null) {
-                client.endpoints().watch(internalEndpointsWatcher);
+                client.endpoints().inAnyNamespace().watch(internalEndpointsWatcher);
             }
         }
     }
diff --git a/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/impl/K8sIngressWatcher.java b/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/impl/K8sIngressWatcher.java
index af55a05..b873c1a 100644
--- a/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/impl/K8sIngressWatcher.java
+++ b/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/impl/K8sIngressWatcher.java
@@ -130,7 +130,7 @@
             KubernetesClient client = k8sClient(k8sApiConfigService);
 
             if (client != null) {
-                client.extensions().ingresses().watch(internalK8sIngressWatcher);
+                client.extensions().ingresses().inAnyNamespace().watch(internalK8sIngressWatcher);
             }
         }
     }
diff --git a/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/impl/K8sPodWatcher.java b/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/impl/K8sPodWatcher.java
index a5c15f4..948865a 100644
--- a/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/impl/K8sPodWatcher.java
+++ b/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/impl/K8sPodWatcher.java
@@ -128,7 +128,7 @@
             KubernetesClient client = k8sClient(k8sApiConfigService);
 
             if (client != null) {
-                client.pods().watch(internalK8sPodWatcher);
+                client.pods().inAnyNamespace().watch(internalK8sPodWatcher);
             }
         }
     }
diff --git a/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/impl/K8sServiceWatcher.java b/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/impl/K8sServiceWatcher.java
index 17f9946..3cb079a 100644
--- a/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/impl/K8sServiceWatcher.java
+++ b/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/impl/K8sServiceWatcher.java
@@ -130,7 +130,7 @@
             KubernetesClient client = k8sClient(k8sApiConfigService);
 
             if (client != null) {
-                client.services().watch(internalK8sServiceWatcher);
+                client.services().inAnyNamespace().watch(internalK8sServiceWatcher);
             }
         }
     }
