diff --git a/tools/package/runtime/bin/onos-diagnostics-k8s b/tools/package/runtime/bin/onos-diagnostics-k8s
new file mode 100755
index 0000000..e5b9aa7
--- /dev/null
+++ b/tools/package/runtime/bin/onos-diagnostics-k8s
@@ -0,0 +1,125 @@
+#!/bin/bash
+
+#
+# Copyright 2020-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# --------------------------------------------------------------------------------
+# Tool to collect cluster-wide diagnostics into a single tar stream using kubectl
+# --------------------------------------------------------------------------------
+function usage() {
+    echo "usage: $(basename $0) [-x] [-j] [-n name] [-k karaf_home] [pod1 pod2...]"
+    echo ""
+    echo "Environment Variables:"
+    echo "    DIAGS_PROFILE     Profile to be used to collect diags."
+    echo "                      Availables profiles in onos-diagnostics-profile"
+    echo "    KARAF_HOME        KARAF_HOME inside the ONOS pod (path from the mount point)"
+    echo "    ONOS_PODS         ONOS pods composing the cluster"
+    echo ""
+    echo "Example Usages:"
+    echo "    # Collect compressed diagnostics for the cluster."
+    echo "    # Karaf home is drawn from environment variable."
+    echo "    # Collection archive will be named /tmp/onos-diags.tar.gz"
+    echo "    # ONOS pods names will be drawn from ONOS_PODS variable."
+    echo "    # Diags profile is drawn from environment variable."
+    echo "    > $(basename $0) "
+    echo ""
+    echo "    # Collect diagnostics for the cluster and leave them extracted. "
+    echo "    # Collection directory will be named /tmp/prague-diags/"
+    echo "    # Collection archive will be named /tmp/prague-diags.tar.gz."
+    echo "    # Karaf home is '/root/foo/karaf'."
+    echo "    # ONOS pods names will be drawn from ONOS_PODS variable."
+    echo "    > $(basename $0) -x -n prague -k karaf"
+    echo ""
+    echo "    # Collect diagnostics for the cluster and store them in JSON files."
+    echo "    # JSON_CLI_COMMANDS below lists JSON-supported diagnostics commands."
+    echo "    # Collection archive will be named /tmp/onos-diags.tar.gz"
+    echo "    > $(basename $0) -j"
+    echo ""
+    echo "    # Collect compressed diagnostics for a cluster."
+    echo "    # Karaf home is 'karaf'."
+    echo "    # Collection archive will be named /tmp/onos-diags.tar.gz"
+    echo "    # The pods names are listed explicitly."
+    echo "    > $(basename $0) -k karaf onos-0 onos-1 onos-2"
+
+    exit 1
+}
+
+command -v kubectl >/dev/null 2>&1 || usage;
+
+# Let's source the different profiles
+. onos-diagnostics-profile
+
+# By default the ONOS base profile will be used
+[ -z "$DIAGS_PROFILE" ] && DIAGS_PROFILE=ONOS_PROFILE;
+
+# Scan arguments for user/password or other options...
+while getopts n:k:x?j?h o; do
+    case "$o" in
+        n) name=$OPTARG;;
+        k) KARAF_HOME=$OPTARG;;
+        x) extract=true;;
+        j) json=true;;
+        *) usage;;
+    esac
+done
+
+let OPC=$OPTIND-1
+shift $OPC
+
+[ $# -lt 1 -a -z "$ONOS_PODS" ] && usage;
+
+[ -z "$KARAF_HOME" ] && usage;
+
+diags=/tmp/${name:-onos}-diags
+rm -fr $diags $diags.tar.gz; mkdir -p $diags
+
+[ -z $1 ] && nodes=$ONOS_PODS || nodes=$*
+
+# -j option will activate T3_OFFLINE_PROFILE
+[ ! -z $json ] && DIAGS_PROFILE=T3_OFFLINE_PROFILE
+
+# Collect diagnostics from each cluster node
+for node in $nodes; do
+    printf "Collecting diagnostics on $node..."
+
+    # Prepare a clean place for collecting the node diagnostic data
+    cd $diags; rm -fr $node; mkdir -p $node; cd $node;
+
+    if [ -z $json ]; then
+        # Acquire locally obtained diagnostics via kubectl
+        printf "logs "
+        kubectl cp $node:$KARAF_HOME/data/log .
+        kubectl exec -it $node -- bash -c "ls -l apps/*" > apps-dir.txt
+    fi
+
+    # Acquire apps info through onos cli
+    eval CLI_COMMANDS=\${${DIAGS_PROFILE}[@]}
+    for cmd in $CLI_COMMANDS; do
+        # @ is used as workaround for the array expansion
+        cmd="$(echo $cmd | sed 's/@/ /g')"
+        cmdLog="$(echo $cmd | cut -d\  -f1 | sed 's/:/-/g').txt"
+        printf "$cmdLog "
+        CMD="kubectl exec -it $node -- bash $KARAF_HOME/bin/client"
+        $CMD "$cmd" 2>/dev/null | sed -n '1!p' >$cmdLog
+    done
+
+    printf " Done.\n"
+done
+
+# Tar-up diagnostics from all the nodes
+cd $diags
+tar zcf $diags.tar.gz *
+[ -z $extract ] && rm -fr $diags
