Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird beschrieben, wie Sie einige gängige Tools beim Kennenlernen, Entdecken oder Behandeln von Problemen in Ihrer Azure IoT Einsatz-Instanzen verwenden. Diese Tools sind zusätzlich zu Funktionen verfügbar, die vom Azure-Portal, der Azure CLI, der Einsatz-Webbenutzeroberfläche und Einblicksressourcen bereitgestellt werden.
Kubernetes-Tools
Azure IoT Einsatz-Komponenten werden in einem Kubernetes-Standardcluster ausgeführt. Sie können die CLI-Tools kubectl und k9s verwenden, um mit Ihrem Cluster zu interagieren und ihn zu verwalten.
kubectl
kubectl ist das Kubernetes-Befehlszeilentool zum Verwalten Ihres Clusters. Es verfügt über viele Funktionen, über die Sie in der offiziellen Kubernetes-Dokumentation mehr erfahren können. In diesem Artikel werden die allgemeinen Verwendungsmöglichkeiten für kubectl bei der Arbeit mit Azure IoT Einsatz beschrieben, z. B. das Auflisten der ausgeführten Pods und das Anzeigen von Protokollen.
Konfigurieren von kubectl zum Herstellen einer Verbindung mit Ihrer Instanz
Im Artikel Vorbereiten Ihres Azure Arc-aktivierten Kubernetes-Clusters wird beschrieben, wie Sie kubectl konfigurieren, um eine Verbindung mit Ihrem k3s-Cluster herzustellen, wenn Sie kubectl-Befehle auf demselben Computer ausführen, auf dem Sie Ihren Kubernetes-Cluster bereitgestellt haben.
Tipp
Fügen Sie den Befehl export KUBECONFIG=~/.kube/config zu Ihrer .bashrc- oder .bash_profile-Datei hinzu, damit Sie die Umgebungsvariable KUBECONFIG nicht jedes Mal festlegen müssen, wenn Sie ein neues Terminalfenster öffnen.
Wenn Sie Ihre Azure IoT Einsatz-Instanz in einer Arc-fähigen AKS-EE bereitgestellt haben, wird die Konfiguration kubectl automatisch für Sie eingerichtet. Sie können kubectl-Befehle direkt über die Befehlszeile auf dem Computer ausführen, auf dem Sie Ihren Cluster bereitgestellt haben.
Es ist auch möglich, kubectl-Befehle von Ihrem lokalen Clientcomputer auszuführen anstelle des Computers, auf dem Sie Ihren Arc-fähigen Cluster bereitgestellt haben:
Verwenden Sie als einmaliger Schritt SSH, um eine Verbindung mit dem Computer herzustellen, auf dem Sie Ihren Cluster bereitgestellt haben, und führen Sie die folgenden Befehle aus. Achten Sie darauf, dass Sie <your-name> mit Ihrem Namen ersetzen:
kubectl create serviceaccount <your-name> -n default
kubectl create clusterrolebinding <your-name>-binding --clusterrole cluster-admin --serviceaccount default:<your-name>
kubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
name: <your-name>-secret
annotations:
kubernetes.io/service-account.name: <your-name>
type: kubernetes.io/service-account-token
EOF
TOKEN=$(kubectl get secret <your-name>-secret -o jsonpath='{$.data.token}' | base64 -d | sed 's/$/\n/g')
echo $TOKEN
Notieren Sie sich das Token. Sie verwenden dieses Token, um sich bei der Ausführung von kubectl-Befehlen auf dem Clientcomputer zu authentifizieren. Sie können jetzt die Verbindung mit dem Computer trennen, auf dem Ihr Kubernetes-Cluster ausgeführt wird.
Um kubectl zum Herstellen einer Verbindung mit dem Cluster auf Ihrem Clientcomputer zu verwenden, öffnen Sie zwei Terminals:
Führen Sie im ersten Terminal den folgenden Befehl aus, um einen Proxy für die Verbindung mit Ihrem Cluster zu konfigurieren. Achten Sie darauf, die Werte für die drei Platzhalter zu ersetzen:
az connectedk8s proxy -n <your-arc-enabled-cluster-name> -g <your-arc-enabled-cluster-resource-group> --token <token-from-previous-step>Lassen Sie dieses Terminal geöffnet, während Sie
kubectl-Befehle im zweiten Terminal ausführen.Im zweiten Terminal können Sie die
kubectl-Befehle für Ihren Remotecluster ausführen. Listen Sie beispielsweise die Pods imazure-iot-operations-Namespace auf:kubectl get pods -n azure-iot-operationsTipp
Sie können auch Befehle ausführen, z. B.
k9s, die die Konfigurationkubectlin diesem Terminal verwenden.Der Kontext
kubectlbleibt auf den Remotecluster festgelegt, bis Sie das erste Terminal schließen.
Weitere Informationen finden Sie unter Verwenden der Clusterverbindung zur Herstellung einer sicheren Verbindung mit Azure Arc-fähigen Kubernetes-Clustern.
Namensräume
Standardmäßig verwenden Arc und Azure IoT Einsatz die folgenden Namespaces im Kubernetes-Cluster:
-
azure-iot-operationsfür die Azure IoT Einsatz-Komponenten. -
azure-arcfür die Azure Arc-fähigen Kubernetes-Komponenten.
Tipp
Führen Sie den folgenden Befehl aus, um alle Namespaces in Ihrem Cluster anzuzeigen: kubectl get namespaces.
Häufige kubectl-Befehle
Führen Sie den folgenden Befehl aus, um alle im Namespace azure-iot-operations ausgeführten Pods anzuzeigen:
kubectl get pods -n azure-iot-operations
Die Ausgabe sieht wie folgt aus:
NAME READY STATUS RESTARTS AGE
adr-schema-registry-0 2/2 Running 0 19m
adr-schema-registry-1 2/2 Running 0 19m
aio-akri-agent-777477bc68-72lrg 1/1 Running 7 (83m ago) 21d
aio-broker-authentication-0 1/1 Running 7 (83m ago) 21d
aio-broker-backend-1-0 1/1 Running 11 (82m ago) 21d
aio-broker-backend-1-1 1/1 Running 7 (83m ago) 21d
aio-broker-diagnostics-probe-0 1/1 Running 11 (83m ago) 21d
aio-broker-diagnostics-service-0 1/1 Running 7 (83m ago) 21d
aio-broker-fluent-bit-6bkf2 1/1 Running 0 16m
aio-broker-frontend-0 1/1 Running 12 (83m ago) 21d
aio-broker-health-manager-0 1/1 Running 14 (82m ago) 21d
aio-broker-operator-0 1/1 Running 7 (83m ago) 21d
aio-broker-upgrade-status-job-1.0.4-bwlcc 0/1 Completed 0 77m
aio-broker-webhook-admission-65d67f8ddc-jct9j 1/1 Running 0 82m
aio-dataflow-admission-webhook-84dd44c8bd-6pw58 1/1 Running 7 (83m ago) 21d
aio-dataflow-operator-0 1/1 Running 14 (83m ago) 21d
aio-dataflow-upgrade-status-job-1.0.5-msmf4 0/1 Completed 0 77m
aio-opc-asset-discovery-54649d46cf-kb6qs 1/1 Running 2 (83m ago) 17d
aio-opc-media-1-785748ff6c-qkhgl 1/1 Running 1 (83m ago) 14d
aio-opc-opc.tcp-1-858b9ff67-dxwvb 1/1 Running 4 (80m ago) 17d
aio-opc-supervisor-5d6b9bfc49-fgt7d 1/1 Running 2 (83m ago) 17d
aio-operator-7b9b585dc6-bvfpd 2/2 Running 0 19m
aio-usage-28946280-f42k8 0/1 Completed 0 14d
aio-usage-28946340-45grx 0/1 Completed 0 14d
aio-usage-28946400-znn7v 0/1 Completed 0 13d
aio-usage-28946460-nrw4z 0/1 Completed 0 13d
aio-usage-28966500-mrcmf 0/1 Completed 0 55m
Führen Sie den folgenden Befehl aus, um die Protokolle für einen bestimmten Pod anzuzeigen, z. B. den Pod aio-opc-opc.tcp-1-858b9ff67-dxwvb:
kubectl logs aio-opc-opc.tcp-1-858b9ff67-dxwvb -n azure-iot-operations
Führen Sie den folgenden Befehl aus, um eine menschenlesbare Beschreibung für einen bestimmten Pod anzuzeigen, z. B. den Pod aio-opc-opc.tcp-1-858b9ff67-dxwvb:
kubectl describe pod aio-opc-opc.tcp-1-858b9ff67-dxwvb -n azure-iot-operations
An einigen Stellen verwendet die Azure IoT Einsatz-Dokumentation den Befehl kubectl apply, um zur Vornahme einer Konfigurationsänderung im Cluster eine Kubernetes-Manifestdatei anzuwenden.
k9s
Das Hilfsprogramm k9s bietet eine terminalbasierte Benutzeroberfläche zum Verwalten Ihres Kubernetes-Clusters. Es verwendet Ihre kubectl-Konfiguration, um eine Verbindung mit Ihrem Cluster herzustellen und bietet eine visuelle Möglichkeit, mit Ihrem Cluster zu interagieren. Die Standardansicht listet alle derzeit in Ihrem Cluster ausgeführten Pods auf:
Wenn Sie Azure IoT Einsatz verwenden, können Sie die Ansicht filtern, um nur die Pods im azure-iot-operations-Namespace anzuzeigen.
Geben Sie
:ein, um den Befehlsbereich zu öffnen, anschließendns, und drücken Sie die Eingabetaste.Wählen Sie in der Liste der Namespaces
azure-iot-operationsaus, und drücken Sie die Eingabetaste.Die Liste der Pods zeigt jetzt nur die Pods im azure-iot-operations-Namespace an:
Tipp
Sie können jetzt die Zahlentasten verwenden, um Filter anzuwenden. Der vorherige Screenshot zeigt, dass 0 alle Pods und 1 nur die Pods im azure-iot-operations-Namespace anzeigt.
Sie können Tastenkombinationen verwenden, um Informationen zu Ihren Pods anzuzeigen. Zum Beispiel:
Um einen Pod zu beschreiben, wählen Sie ihn in der Liste aus, und drücken Sie d.
Um die Protokolle für einen Pod anzuzeigen, wählen Sie sie in der Liste aus, und drücken Sie l.
Tipp
Sie können die Zahlentasten verwenden, um in der Protokolldatei zu navigieren.
Anzeigen von benutzerdefinierten Ressourcentypen, die nicht Pods im Cluster sind:
Drücken Sie Strg-a, um die Liste der benutzerdefinierten Ressourcentypen anzuzeigen.
Wählen Sie den benutzerdefinierten Ressourcentyp aus, z. B. Geräte , und drücken Sie die EINGABETASTE.
Tipp
Um nach einem benutzerdefinierten Ressourcentyp nach Namen zu suchen, geben Sie / ein, und beginnen Sie dann mit der Eingabe des Namens des gesuchten Typs.
Wählen Sie eine benutzerdefinierte Ressource und einen der verfügbaren Vorgänge aus. Sie können z. B. die YAML-Definition eines Geräteendpunktprofils anzeigen, indem Sie es auswählen und Y drücken. Für einigen Ressourcen können Sie die Konfiguration bearbeiten.
In der folgenden Tabelle werden einige der benutzerdefinierten Ressourcentypen beschrieben, mit denen Sie in Azure IoT Einsatz arbeiten können:
| Benutzerdefinierter Ressourcentyp | Beschreibung |
|---|---|
devices |
Stellt die Konfiguration für ein Gerät dar. |
assets |
Stellt die Konfiguration für eine Ressource dar. |
brokers
brokerlisters
brokerauthentications
brokerauthorizations
|
Stellt die Konfiguration für einen MQTT-Broker dar. |
dataflows, dataflowendpointsdataflowprofiles |
Stellt die Konfiguration für einen Datenfluss dar. |
secrets, secretsyncssecretproviderclasses |
Stellt die Konfiguration für Geheimnisse und die Geheimnisverwaltung dar. |
MQTT-Tools
Beim Kennenlernen und Testen des MQTT-Brokers in Ihrer Azure IoT Einsatz-Instanz können Sie MQTT-Clienttools für die Interaktion mit dem Broker verwenden. Aus Sicherheitsgründen macht Azure IoT Einsatz den MQTT-Broker außerhalb des Clusters jedoch nicht verfügbar. Als Problemumgehung stehen Ihnen die folgenden Optionen zur Verfügung:
Achtung
Diese drei Ansätze eignen sich nur für Dev/Test-Umgebungen. Sie sollten sie unter keinen Umständen in einer Produktionsumgebung verwenden.
Stellen Sie eine Verbindung mit dem Standardlistener im Cluster her. Diese Option verwendet die Standardkonfiguration und erfordert keine zusätzlichen Updates. Sie sind auf eine kleine Gruppe von MQTT-Clienttools beschränkt.
Verwenden Sie einen
NodePort-Dienst, um den MQTT-Broker außerhalb des Clusters verfügbar zu machen. Diese Option erfordert, dass Sie die Konfiguration des MQTT-Brokers aktualisieren. Sie können alle MQTT-Clienttools verwenden, die das Herstellen einer Verbindung mit einem bestimmten Port unterstützen.Verwenden Sie einen
LoadBalancer-Dienst, um den MQTT-Broker außerhalb des Clusters verfügbar zu machen. Diese Option erfordert, dass Sie die Konfiguration des MQTT-Brokers aktualisieren. Sie können alle MQTT-Clienttools verwenden, die das Herstellen einer Verbindung mit einem bestimmten Port unterstützen.
Herstellen einer Verbindung mit dem Standardlistener im Cluster
Um eine Verbindung mit dem Standardlistener innerhalb des Clusters herzustellen, können Sie einen Pod bereitstellen, auf dem CLI-basierte MQTT-Clienttools wie mosquitto_sub und mosquitto_pub ausgeführt werden. Der folgende Befehl stellt einen solchen Pod in Ihrem Cluster bereit:
kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/quickstarts/mqtt-client.yaml
Wenn der Pod ausgeführt wird, können Sie eine Verbindung mit einer Shell im Pod herstellen:
kubectl exec --stdin --tty mqtt-client -n azure-iot-operations -- sh
Verwenden Sie diese Shell, um Befehle zur Interaktion mit dem MQTT-Broker auszuführen wie mosquitto_sub und mosquitto_pub. Beispielsweise zum Abonnieren aller Themen unter dem azure-iot-operations/data-Thema:
mosquitto_sub --host aio-broker --port 18883 --topic "azure-iot-operations/data/#" --verbose --cafile /var/run/certs/ca.crt -D CONNECT authentication-method 'K8S-SAT' -D CONNECT authentication-data $(cat /var/run/secrets/tokens/broker-sat)
Beachten Sie, wie der Befehl eine Zertifikatdatei und ein Token aus dem Dateisystem des Pods lädt. Die Manifestdatei mqtt-client.yaml bindet diese Dateien in den Pod ein.
Um eine einzelne Nachricht aus dem azure-iot-operations/data/thermostat-Thema zu erhalten, fügen Sie die Option -C 1 hinzu:
mosquitto_sub --host aio-broker --port 18883 --topic "azure-iot-operations/data/thermostat" -C 1 --verbose --cafile /var/run/certs/ca.crt -D CONNECT authentication-method 'K8S-SAT' -D CONNECT authentication-data $(cat /var/run/secrets/tokens/broker-sat)
Um die MQTT-v5-Benutzereigenschaften in den Nachrichten anzuzeigen, verwenden Sie die Option -F %P:
mosquitto_sub --host aio-broker --port 18883 --topic "azure-iot-operations/data/thermostat" -V mqttv5 -F %P --cafile /var/run/certs/ca.crt -D CONNECT authentication-method 'K8S-SAT' -D CONNECT authentication-data $(cat /var/run/secrets/tokens/broker-sat)
Um eine Nachricht im azure-iot-operations/data/valve-Thema zu veröffentlichen:
mosquitto_pub --host aio-broker --port 18883 --topic "azure-iot-operations/data/valve" --message "open:15%" --id "controller" --cafile /var/run/certs/ca.crt -D CONNECT authentication-method 'K8S-SAT' -D CONNECT authentication-data $(cat /var/run/secrets/tokens/broker-sat)
Wenn Sie mit der Verwendung des MQTT-Clienttools-Pod fertig sind, können Sie ihn aus dem Cluster löschen:
kubectl delete -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/quickstarts/mqtt-client.yaml
Weitere Informationen zu dieser Konfiguration finden Sie unter Herstellen einer Verbindung mit dem Standardlistener im Cluster.
Verwenden eines NodePort- oder LoadBalancer-Diensts
Wenn Sie die Schritte zum Konfigurieren eines Knotenports oder Lastenausgleichsdiensts ausführen, um den MQTT-Broker außerhalb des Clusters verfügbar zu machen, können Sie alle MQTT-Clienttools verwenden, die die Verbindung mit einem bestimmten Port unterstützen. In den folgenden Beispielen wird davon ausgegangen, dass Sie den Dienst ohne Authentifizierung, Autorisierung oder TLS konfiguriert haben. Sie können jetzt Ihre bevorzugten MQTT-Clienttools verwenden, um eine Verbindung mit dem MQTT-Broker am Port 1883 herzustellen, wenn Sie einen Lastenausgleich verwenden, oder einen Verbindung mit dem konfigurierten Port herzustellen, wenn Sie einen Knotenport verwenden.
Wenn Sie beispielsweise das Open-Source-Tool mqttui auf dem Computer ausführen möchten, auf dem Ihr Kubernetes-Cluster ausgeführt wird, verwenden Sie den folgenden Befehl:
mqttui --broker mqtt://localhost:1883
Tipp
Wenn Sie einen Lastenausgleich konfiguriert haben und Port 1883 auf der öffentlichen IP-Adresse des Hostcomputers geöffnet ist, können Sie den folgenden Befehl verwenden, um eine Verbindung mit dem MQTT-Broker von einem anderen Computer herzustellen: mqttui --broker mqtt://<cluster-machine-public-ip>:1883
Sie können das mqttui-Tool verwenden, um Themen zu abonnieren, Nachrichten zu veröffentlichen und die Nachrichten anzuzeigen, die den Broker durchlaufen:
Verwenden Sie den folgenden Befehl, um die Nachrichten in einem bestimmten Thema anzuzeigen, z. B. azure-iot-operations/data/thermostat:
mqttui --broker mqtt://localhost:1883 azure-iot-operations/data/thermostat
Verwenden Sie den folgenden Befehl, um eine Nachricht im azure-iot-operations/data/valve-Thema zu veröffentlichen:
mqttui publish --broker mqtt://localhost:1883 azure-iot-operations/data/valve open:15%
Verwenden Sie die folgende Konfiguration, um das Open-Source-Tool MQTT Explorer auf dem Computer auszuführen, auf dem Ihr Kubernetes-Cluster ausgeführt wird:
Verwenden Sie die folgende Konfiguration, um das Open-Source-Tool MQTT Explorer auf Ihrem lokalen Computer auszuführen und eine Verbindung mit dem Computer herzustellen, auf dem Ihr Kubernetes-Cluster ausgeführt wird:
Stellen Sie sicher, dass für MQTT Explorer mindestens das #-Thema konfiguriert ist:
Nachdem Sie eine Verbindung herstellen, können Sie Nachrichten in den Themen sehen, die Sie abonniert haben, und Nachrichten veröffentlichen:
Tipps
Hier finden Sie einige zusätzliche Tipps, die Ihnen bei der Arbeit mit Ihrer Azure IoT Operations-Instanz helfen:
Ermitteln Sie den benutzerdefinierten Standort Ihrer Azure IoT Operations-Instanz
Um den benutzerdefinierten Speicherort zu finden, der Ihrer Azure IoT Operations-Instanz zugeordnet ist, verwenden Sie den folgenden Befehl:
az iot ops show --name <YOUR_INSTANCE_NAME> --resource-group <YOUR_RESOURCE_GROUP> --query "extendedLocation.name" --output tsv
Sie finden den benutzerdefinierten Speicherort auch im Azure-Portal auf der Seite "Instanzübersicht" im Feld " Erweiterter Standort ".