Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt beschreven hoe u enkele veelgebruikte hulpprogramma's gebruikt wanneer u leert, verkent of problemen met uw Azure IoT-bewerkingen-exemplaren opgeeft. Deze hulpprogramma's zijn naast de mogelijkheden van de Azure-portal, Azure CLI, de webinterface voor bewerkingen en observabiliteitsresources.
Kubernetes-hulpprogramma's
Azure IoT-bewerkingen onderdelen worden uitgevoerd in een standaard Kubernetes-cluster. U kunt de CLI-hulpprogramma's kubectl en k9s gebruiken om met uw cluster te communiceren en het te beheren.
Onderdelen beheren met behulp van Kubernetes-implementatiemanifesten
Belangrijk
Het gebruik van Kubernetes-implementatiemanifesten wordt niet ondersteund in productieomgevingen en mag alleen worden gebruikt voor foutopsporing en testen.
Over het algemeen gebruikt Azure IoT-bewerkingen het Azure Arc-platform om een hybride cloudervaring te bieden waar u de configuratie kunt beheren via Azure Resource Manager (ARM) en front-endhulpprogramma's zoals de Azure-portal, Bicep en de Azure CLI.
In een foutopsporings- of testomgeving kunt u echter de onderdelen van Azure IoT-bewerkingen beheren met behulp van YAML Kubernetes-implementatiemanifesten. Dit betekent dat u hulpprogramma's zoals kubectl kunt gebruiken om bepaalde onderdelen van Azure IoT-bewerkingen te beheren. Deze functie heeft enkele beperkingen:
- Tenzij u resourcesynchronisatie inschakelt in Azure IoT-bewerkingen met behulp van de opdracht
az iot ops enable-rsync, worden wijzigingen in de resources die gebruikmaken van Kubernetes-implementatiemanifesten niet gesynchroniseerd met Azure. Zie Resourcesynchronisatie voor meer informatie over resourcesynchronisatie. - Zelfs als resourcesynchronisatie is ingeschakeld, worden gloednieuwe resources die zijn gemaakt met kubernetes-implementatiemanifesten niet gesynchroniseerd met Azure. Alleen wijzigingen in bestaande resources worden gesynchroniseerd.
Belangrijk
In productie is de cloud altijd de bron van waarheid. Maak en wijzig altijd resources via Azure, met behulp van de bewerkingservaring, de Azure-portal, de Azure CLI of ARM/Bicep-sjablonen. Het rechtstreeks maken van resources in het cluster of het bewerken van bestaande aangepaste Kubernetes-resources kan ertoe leiden dat de cloud en rand niet meer worden gesynchroniseerd en niet worden ondersteund in productieomgevingen.
kubectl
kubectl is het Kubernetes-opdrachtregelprogramma voor het beheren van uw cluster. Het heeft veel mogelijkheden die u kunt leren in de officiële kubernetes-documentatie. In dit artikel worden de algemene toepassingen voor kubectl beschreven wanneer u met Azure IoT-bewerkingen werkt, zoals het weergeven van de actieve pods en het weergeven van logboeken.
Configureer kubectl om verbinding te maken met uw instantie
In het artikel Prepare your Azure Arc-enabled Kubernetes cluster wordt beschreven hoe u kubectl configureert om verbinding te maken met uw k3s cluster wanneer u kubectl opdrachten uitvoert op dezelfde computer waarop u uw Kubernetes-cluster hebt geïmplementeerd.
Aanbeveling
Voeg de export KUBECONFIG=~/.kube/config opdracht toe aan uw .bashrc - of .bash_profile-bestand , zodat u de KUBECONFIG omgevingsvariabele niet telkens hoeft in te stellen wanneer u een nieuw terminalvenster opent.
Als u uw Azure IoT-bewerkingen exemplaar hebt geïmplementeerd in een AKS-EE met Arc, wordt de kubectl-configuratie automatisch voor u ingesteld. U kunt opdrachten rechtstreeks vanaf kubectl de opdrachtregel uitvoeren op de computer waarop u het cluster hebt geïmplementeerd.
Het is ook mogelijk om opdrachten uit te voeren kubectl vanaf uw lokale clientcomputer in plaats van de computer waarop u uw Cluster met Arc hebt geïmplementeerd:
Gebruik SSH als eenmalige stap om verbinding te maken met de computer waarop u uw cluster hebt geïmplementeerd en voer de volgende opdrachten uit. Zorg ervoor dat u <your-name> vervangt door uw naam.
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
Noteer het token. U gebruikt dit token om te verifiëren wanneer u opdrachten uitvoert kubectl op uw clientcomputer. U kunt nu de verbinding verbreken met de computer waarop uw Kubernetes-cluster wordt uitgevoerd.
Als u wilt gebruiken kubectl op uw clientcomputer om verbinding te maken met het cluster, opent u twee terminals:
Voer in de eerste terminal de volgende opdracht uit om een proxy te configureren om verbinding te maken met uw cluster. Zorg ervoor dat u de waarden voor de drie tijdelijke aanduidingen vervangt:
az connectedk8s proxy -n <your-arc-enabled-cluster-name> -g <your-arc-enabled-cluster-resource-group> --token <token-from-previous-step>Laat deze terminal geopend terwijl u opdrachten uitvoert
kubectlin de tweede terminal.In de tweede terminal kunt u uw
kubectlopdrachten uitvoeren op uw externe cluster. Als u bijvoorbeeld de pods in deazure-iot-operationsnaamruimte wilt weergeven:kubectl get pods -n azure-iot-operationsAanbeveling
U kunt ook opdrachten uitvoeren, zoals
k9s, die gebruikmaken van dekubectlconfiguratie in deze terminal.De
kubectlcontext blijft ingesteld op het externe cluster totdat u de eerste terminal sluit.
Zie Clusterverbinding gebruiken om veilig verbinding te maken met Azure Arc kubernetes-clusters voor meer informatie.
Namespace
Arc en Azure IoT-bewerkingen standaard de volgende naamruimten in het Kubernetes-cluster gebruiken:
-
azure-iot-operationsvoor de Azure IoT-bewerkingen componenten. -
azure-arcvoor de Kubernetes-onderdelen met Azure Arc ingeschakeld.
Aanbeveling
Als u alle naamruimten in uw cluster wilt weergeven, voert u de volgende opdracht uit: kubectl get namespaces
Algemene kubectl opdrachten
Voer de volgende opdracht uit om alle pods weer te geven die in de azure-iot-operations naamruimte worden uitgevoerd:
kubectl get pods -n azure-iot-operations
De uitvoer ziet eruit als in het volgende voorbeeld:
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
Voer de volgende opdracht uit om de logboeken voor een specifieke pod weer te geven, zoals de pod aio-opc-opc.tcp-1-858b9ff67-dxwvb :
kubectl logs aio-opc-opc.tcp-1-858b9ff67-dxwvb -n azure-iot-operations
Als u een door mensen leesbare beschrijving van een specifieke pod wilt weergeven, zoals de aio-opc-opc.tcp-1-858b9ff67-dxwvb pod, voert u de volgende opdracht uit:
kubectl describe pod aio-opc-opc.tcp-1-858b9ff67-dxwvb -n azure-iot-operations
Op sommige plaatsen maakt de Azure IoT-bewerkingen documentatie gebruik van de opdracht kubectl apply om een Kubernetes-manifestbestand toe te passen om een configuratiewijziging in het cluster aan te brengen.
k9s
Het hulpprogramma k9s biedt een terminalgebruikersinterface voor het beheren van uw Kubernetes-cluster. Het gebruikt uw kubectl configuratie om verbinding te maken met uw cluster en biedt een visuele manier om met uw cluster te communiceren. De standaardweergave toont alle pods die momenteel in uw cluster draaien.
Wanneer u met Azure IoT-bewerkingen werkt, kunt u de weergave filteren om alleen de pods weer te geven in de azure-iot-operations-naamruimte.
Typ
:om het opdrachtvenster te openen en typnsen druk op Enter.Selecteer
azure-iot-operationsen druk op Enter in de lijst met naamruimten.In de lijst met pods worden nu alleen de pods in de naamruimte azure-iot-operations getoond.
Aanbeveling
U kunt nu de nummersleutels gebruiken om filters toe te passen. In de vorige schermopname ziet u dat 0 alle pods weergeeft en 1 alleen de pods in de naamruimte azure-iot-operations weergeeft.
U kunt sneltoetsen gebruiken om informatie over uw pods weer te geven. Voorbeeld:
Als u een pod wilt beschrijven, selecteert u deze in de lijst en drukt u op d.
Als u de logboeken voor een pod wilt weergeven, selecteert u deze in de lijst en drukt u op l.
Aanbeveling
U kunt de nummertoetsen gebruiken om door het logboekbestand te navigeren.
Als u aangepaste resourcetypen wilt weergeven, anders dan die pods in het cluster:
Druk op Ctrl-a om de lijst met aangepaste resourcetypen weer te geven.
Selecteer het aangepaste resourcetype, zoals apparaten en druk op Enter.
Aanbeveling
Om te zoeken naar een aangepast resourcetype op naam, typt u /, gevolgd door de naam van het type dat u zoekt.
Selecteer een aangepaste resource en kies een van de beschikbare bewerkingen. U kunt bijvoorbeeld de YAML-definitie van een apparaateindpuntprofiel bekijken door het te selecteren en op y te drukken. Voor sommige resources kunt u de configuratie bewerken.
In de volgende tabel worden enkele aangepaste resourcetypen beschreven waarmee u in Azure IoT-bewerkingen kunt werken:
| Aangepast brontype | Beschrijving |
|---|---|
devices |
Vertegenwoordigt de configuratie voor een apparaat. |
assets |
Vertegenwoordigt de configuratie voor een asset. |
brokers,brokerlisters,brokerauthentications,brokerauthorizations |
Vertegenwoordig de configuratie voor een MQTT-broker. |
dataflows, dataflowendpoints, dataflowprofiles |
Vertegenwoordig de configuratie voor een gegevensstroom. |
secrets, secretsyncs, secretproviderclasses |
Vertegenwoordig de configuratie voor geheimen en geheimbeheer. |
MQTT-hulpprogramma's
Wanneer u de MQTT-broker in uw Azure IoT-bewerkingen-exemplaar leert en test, kunt u MQTT-clienthulpprogramma's gebruiken om te communiceren met de broker. Om veiligheidsredenen Azure IoT-bewerkingen de MQTT-broker buiten het cluster niet beschikbaar maakt. Als tijdelijke oplossing hebt u de volgende opties:
Let op
Deze drie benaderingen zijn alleen geschikt voor ontwikkel- en testomgevingen. In geen geval moet u deze gebruiken in een productieomgeving.
Maak verbinding met de standaardlistener in het cluster. Deze optie maakt gebruik van de standaardconfiguratie en vereist geen extra updates. U bent beperkt tot een kleine set MQTT-clienthulpprogramma's.
Gebruik een
NodePortservice om de MQTT-broker buiten het cluster beschikbaar te maken. Voor deze optie moet u de configuratie van de MQTT-broker bijwerken. U kunt alle MQTT-clienthulpprogramma's gebruiken die ondersteuning bieden voor het maken van verbinding met een specifieke poort.Gebruik een
LoadBalancerservice om de MQTT-broker buiten het cluster beschikbaar te maken. Voor deze optie moet u de configuratie van de MQTT-broker bijwerken. U kunt alle MQTT-clienthulpprogramma's gebruiken die ondersteuning bieden voor het maken van verbinding met een specifieke poort.
Verbinding maken met de standaardlistener in het cluster
Als u verbinding wilt maken met de standaard-luisteraar in het cluster, kunt u een pod implementeren waarop CLI-gebaseerde MQTT-clienttools zoals mosquitto_sub en mosquitto_pub worden uitgevoerd. Met de volgende opdracht wordt een dergelijke pod geïmplementeerd in uw cluster:
kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/quickstarts/mqtt-client.yaml
Nadat de pod draait, kunt u met een shell verbinding maken in de pod.
kubectl exec --stdin --tty mqtt-client -n azure-iot-operations -- sh
Gebruik deze shell om opdrachten uit te voeren, zoals mosquitto_sub en mosquitto_pub om te communiceren met de MQTT-broker. Als u zich bijvoorbeeld wilt abonneren op alle onderwerpen onder het azure-iot-operations/data onderwerp:
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)
U ziet hoe met de opdracht een certificaatbestand en een token uit het bestandssysteem van de pod worden geladen. Het mqtt-client.yaml manifestbestand koppelt deze bestanden aan de pod.
Als u één bericht van het azure-iot-operations/data/thermostat onderwerp wilt ontvangen, voegt u de -C 1 optie toe:
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)
Als u de MQTT v5-gebruikerseigenschappen in de berichten wilt weergeven, gebruikt u de -F %P optie:
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)
Een bericht publiceren naar het azure-iot-operations/data/valve onderwerp:
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)
Wanneer u klaar bent met het gebruik van de pod MQTT-clienthulpprogramma's, kunt u deze verwijderen uit het cluster:
kubectl delete -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/quickstarts/mqtt-client.yaml
Zie Verbinding maken met de standaardlistener in het cluster voor meer informatie over deze configuratie.
Een NodePort of LoadBalancer service gebruiken
Als u de stappen volgt om een knooppuntpoort of Load Balancer-service te configureren om de MQTT-broker buiten het cluster beschikbaar te maken, kunt u alle MQTT-clienthulpprogramma's gebruiken die ondersteuning bieden voor het maken van verbinding met een specifieke poort. In de volgende voorbeelden wordt ervan uitgegaan dat u de service hebt geconfigureerd zonder verificatie, autorisatie of TLS. U kunt nu uw favoriete MQTT-clienthulpprogramma's gebruiken om verbinding te maken met de MQTT-broker op poort 1883 als u een load balancer of de geconfigureerde poort gebruikt als u een knooppuntpoort gebruikt.
Als u bijvoorbeeld het opensource-mqttui-hulpprogramma wilt uitvoeren op de computer waarop uw Kubernetes-cluster wordt uitgevoerd, gebruikt u de volgende opdracht:
mqttui --broker mqtt://localhost:1883
Aanbeveling
Als u een load balancer hebt geconfigureerd en poort 1883 is geopend op het openbare IP-adres van de hostcomputer, kunt u de volgende opdracht gebruiken om vanaf een andere computer verbinding te maken met de MQTT-broker: mqttui --broker mqtt://<cluster-machine-public-ip>:1883
U kunt het mqttui hulpprogramma gebruiken om u te abonneren op onderwerpen, berichten te publiceren en de berichten te bekijken die via de broker stromen:
Gebruik de volgende opdracht om de berichten over een specifiek onderwerp weer te geven, zoals azure-iot-operations/data/thermostat:
mqttui --broker mqtt://localhost:1883 azure-iot-operations/data/thermostat
Gebruik de volgende opdracht om een bericht naar het azure-iot-operations/data/valve onderwerp te publiceren:
mqttui publish --broker mqtt://localhost:1883 azure-iot-operations/data/valve open:15%
Gebruik de volgende configuratie om het opensource MQTT Explorer-hulpprogramma uit te voeren op de computer waarop uw Kubernetes-cluster wordt uitgevoerd:
Als u het opensource MQTT Explorer-hulpprogramma op uw lokale computer wilt uitvoeren om verbinding te maken met de computer waarop uw Kubernetes-cluster wordt uitgevoerd, gebruikt u de volgende configuratie:
Zorg ervoor dat MQTT Explorer ten minste het # onderwerp heeft geconfigureerd:
Nadat u verbinding hebt gemaakt, kunt u berichten bekijken in de onderwerpen waarop u zich hebt geabonneerd en berichten publiceren:
Tips
Hier volgen enkele aanvullende tips om u te helpen met uw Azure IoT-bewerkingen exemplaar te werken:
De aangepaste locatie van uw Azure IoT-bewerkingen-exemplaar zoeken
Gebruik de volgende opdracht om de aangepaste locatie te vinden die is gekoppeld aan uw Azure IoT-bewerkingen-exemplaar:
az iot ops show --name <YOUR_INSTANCE_NAME> --resource-group <YOUR_RESOURCE_GROUP> --query "extendedLocation.name" --output tsv
U kunt de aangepaste locatie ook vinden in de Azure-portal op de overzichtspagina van het exemplaar in het veld Extended location.