diff --git a/tests/itests/README.md b/tests/itests/README.md
index ebbba5a..e90ca54 100644
--- a/tests/itests/README.md
+++ b/tests/itests/README.md
@@ -189,7 +189,7 @@
 device and verify that alarms are generated by the device.
 
 To run the test in the docker-compose environment,
-start the Voltha ensemble and then run the test:
+start the Voltha ensemble and then execute the test:
 ```
 cd /cord/incubator/voltha
 . ./env.sh
@@ -227,7 +227,8 @@
 along with a filter against one of the devices.  The test will validate that alarms are received
 for the unfiltered device and alarms will be suppressed for the filtered device.
 
-After starting the Voltha ensemble, run the test:
+To run the test in the docker-compose environment,
+start the Voltha ensemble and then execute the test:
 ```
 cd /cord/incubator/voltha
 . ./env.sh
@@ -235,6 +236,22 @@
 docker-compose -f compose/docker-compose-system-test.yml up -d
 nosetests -s tests/itests/voltha/test_voltha_alarm_filters.py
 ```
+To run the test in a single-node Kubernetes environment (see document voltha/BUILD.md),
+start the Voltha ensemble:
+```
+./tests/itests/env/voltha-k8s-stop.sh
+./tests/itests/env/voltha-k8s-start.sh
+```
+Wait until all the Voltha pods are in the Running state and take note of
+Kafka's pod IP address (See description for Voltha_alarm_events test).
+Enter the following line into the /etc/hosts file:
+```
+<kafka-pod-IP-address> kafka-0.kafka.voltha.svc.cluster.local
+```
+To run the test:
+```
+nosetests -s tests/itests/voltha/test_voltha_alarm_filters.py --tc-file=tests/itests/env/k8s-consul.ini
+```
 
 * **Dispatcher**:  This test exercises the requests forwarding via the Global 
 handler.
@@ -264,7 +281,7 @@
 ``` 
 
 To run the test in Kubernetes, set up a single-node environment by following
-document voltha/BUILD.md. The test is fully automated; simple execute:
+document voltha/BUILD.md. The test is fully automated; simply execute:
 ```
 nosetests -s tests/itests/voltha/test_dispatcher.py --tc-file=tests/itests/env/k8s-consul.ini
 ```
diff --git a/tests/itests/env/voltha-ponsim-k8s-start.sh b/tests/itests/env/voltha-ponsim-k8s-start.sh
index e2d82e2..55f087d 100755
--- a/tests/itests/env/voltha-ponsim-k8s-start.sh
+++ b/tests/itests/env/voltha-ponsim-k8s-start.sh
@@ -40,9 +40,24 @@
 
 # An ONU container creates the pon0 bridge
 kubectl apply -f k8s/onu.yml
-sleep 30
+
 echo 8 > tests/itests/env/tmp_pon0_group_fwd_mask
-sudo cp tests/itests/env/tmp_pon0_group_fwd_mask /sys/class/net/pon0/bridge/group_fwd_mask
+RETRY=30
+while [ $RETRY -gt 0 ];
+do
+    if [ -f /sys/class/net/pon0/bridge/group_fwd_mask ]; then
+        echo "pon0 found"
+        sudo cp tests/itests/env/tmp_pon0_group_fwd_mask /sys/class/net/pon0/bridge/group_fwd_mask
+        break
+    else
+        echo "waiting for pon0..."
+        RETRY=$(expr $RETRY - 1)
+        sleep 1
+    fi
+done
+if [ $RETRY -eq 0 ]; then
+    echo "Timed out waiting for creation of bridge pon0"
+fi
 rm tests/itests/env/tmp_pon0_group_fwd_mask
 
 kubectl apply -f k8s/rg.yml
diff --git a/tests/itests/voltha/test_voltha_alarm_filters.py b/tests/itests/voltha/test_voltha_alarm_filters.py
index ccb2929..0096745 100644
--- a/tests/itests/voltha/test_voltha_alarm_filters.py
+++ b/tests/itests/voltha/test_voltha_alarm_filters.py
@@ -4,15 +4,23 @@
 from google.protobuf.json_format import MessageToDict
 
 from common.utils.consulhelpers import get_endpoint_from_consul
-from tests.itests.test_utils import \
+from tests.itests.test_utils import get_pod_ip, \
     run_long_running_command_with_timeout
 from tests.itests.voltha.rest_base import RestBase
 from voltha.protos.device_pb2 import Device
 from voltha.protos.voltha_pb2 import AlarmFilter
+from testconfig import config
 
 # ~~~~~~~ Common variables ~~~~~~~
 
 LOCAL_CONSUL = "localhost:8500"
+ENV_DOCKER_COMPOSE = 'docker-compose'
+ENV_K8S_SINGLE_NODE = 'k8s-single-node'
+
+orch_env = ENV_DOCKER_COMPOSE
+if 'test_parameters' in config and 'orch_env' in config['test_parameters']:
+    orch_env = config['test_parameters']['orch_env']
+print 'orchestration-environment: %s' % orch_env
 
 COMMANDS = dict(
     kafka_client_run="kafkacat -b {} -L",
@@ -25,15 +33,17 @@
 
 
 class VolthaAlarmFilterTests(RestBase):
-    # Retrieve details on the REST entry point
-    rest_endpoint = get_endpoint_from_consul(LOCAL_CONSUL, 'envoy-8443')
+    # Get endpoint info
+    if orch_env == ENV_K8S_SINGLE_NODE:
+        rest_endpoint = get_pod_ip('voltha') + ':8443'
+        kafka_endpoint = get_pod_ip('kafka')
+    else:
+        rest_endpoint = get_endpoint_from_consul(LOCAL_CONSUL, 'voltha-envoy-8443')
+        kafka_endpoint = get_endpoint_from_consul(LOCAL_CONSUL, 'kafka')
 
     # Construct the base_url
     base_url = 'https://' + rest_endpoint
 
-    # Start by querying consul to get the endpoint details
-    kafka_endpoint = get_endpoint_from_consul(LOCAL_CONSUL, 'kafka')
-
     # ~~~~~~~~~~~~ Tests ~~~~~~~~~~~~
 
     def test_1_alarm_topic_exists(self):
@@ -63,8 +73,8 @@
         self.verify_rest()
 
         # Create a new device
-        device_not_filtered = self.add_device()
-        device_filtered = self.add_device()
+        device_not_filtered = self.add_device('00:00:00:00:00:01')
+        device_filtered = self.add_device('00:00:00:00:00:02')
 
         self.add_device_id_filter(device_filtered['id'])
 
@@ -87,9 +97,10 @@
         self.get('/api/v1')
 
     # Create a new simulated device
-    def add_device(self):
+    def add_device(self, mac_address):
         device = Device(
             type='simulated_olt',
+            mac_address=mac_address
         )
         device = self.post('/api/v1/devices', MessageToDict(device),
                            expected_http_code=200)
