Sdílet prostřednictvím


Tipy a nástroje pro řešení potíží s instancí azure IoT Operations

Tento článek popisuje, jak používat některé běžné nástroje při učení, zkoumání nebo řešení potíží s instancemi operací Azure IoT. Tyto nástroje jsou kromě funkcí poskytovaných webem Azure Portal, Azure CLI, webovým uživatelským rozhraním a pozorovatelnostmi.

Nástroje pro Kubernetes

Komponenty operací Azure IoT běží ve standardním clusteru Kubernetes. K interakci a správě clusteru kubectl můžete použít nástroje a k9s nástroje rozhraní příkazového řádku.

kubectl

kubectl je nástroj příkazového řádku Kubernetes pro správu clusteru. Má mnoho možností, o které se můžete dozvědět v oficiální dokumentaci kubernetes. Tento článek popisuje běžné použití při kubectl práci s operacemi Azure IoT, jako je výpis spuštěných podů a zobrazení protokolů.

Konfigurace kubectl připojení k vaší instanci

Článek o přípravě clusteru Kubernetes s podporou Azure Arc popisuje, jak nakonfigurovat kubectl připojení ke clusteru k3s při spouštění kubectl příkazů na stejném počítači, na kterém jste nasadili cluster Kubernetes.

Návod

export KUBECONFIG=~/.kube/config Přidejte příkaz do souboru .bashrc nebo .bash_profile, abyste nemuseli při každém otevření nového okna terminálu nastavit KUBECONFIG proměnnou prostředí.

Pokud jste nasadili instanci operace Azure IoT do AKS-EE s podporou arc, kubectl konfigurace se automaticky nastaví za vás. Příkazy můžete spouštět kubectl přímo z příkazového řádku na počítači, na kterém jste nasadili cluster.

Je také možné spouštět kubectl příkazy z místního klientského počítače místo počítače, na kterém jste nasadili cluster s podporou Arc:

Jako jednorázový krok se pomocí SSH připojte k počítači, na kterém jste nasadili cluster, a spusťte následující příkazy. Nezapomeňte nahradit <your-name> svým jménem:

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

Poznamenejte si token. Tento token použijete k ověření při spouštění kubectl příkazů na klientském počítači. Teď se můžete odpojit od počítače, na kterém běží cluster Kubernetes.

Pokud se chcete připojit ke clusteru pomocí kubectl klientského počítače, otevřete dva terminály:

  1. V prvním terminálu spusťte následující příkaz, který nakonfiguruje proxy server pro připojení ke clusteru. Nezapomeňte nahradit hodnoty pro tři zástupné symboly:

    az connectedk8s proxy -n <your-arc-enabled-cluster-name> -g <your-arc-enabled-cluster-resource-group> --token <token-from-previous-step>
    

    Během spouštění kubectl příkazů v druhém terminálu nechte tento terminál otevřený.

  2. V druhém terminálu můžete spouštět kubectl příkazy na vzdáleném clusteru. Pokud například chcete zobrazit seznam podů v azure-iot-operations oboru názvů:

    kubectl get pods -n azure-iot-operations
    

    Návod

    Můžete také spouštět příkazy, například k9s, které používají kubectl konfiguraci v tomto terminálu.

    Kontext kubectl zůstane nastavený na vzdálený cluster, dokud nezavřete první terminál.

Další informace najdete v tématu Použití připojení clusteru k zabezpečenému připojení ke clusterům Kubernetes s podporou Azure Arc.

Obory názvů

Operace Arc a Azure IoT ve výchozím nastavení používají v clusteru Kubernetes následující obory názvů:

  • azure-iot-operations pro komponenty operací Azure IoT.
  • azure-arc pro komponenty Kubernetes s podporou Azure Arc.

Návod

Pokud chcete zobrazit všechny obory názvů v clusteru, spusťte následující příkaz: kubectl get namespaces.

Běžné kubectl příkazy

Pokud chcete zobrazit všechny pody spuštěné v azure-iot-operations oboru názvů, spusťte následující příkaz:

kubectl get pods -n azure-iot-operations

Výstup vypadá jako v následujícím příkladu:

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

Pokud chcete zobrazit protokoly pro konkrétní pod, například aio-opc-opc.tcp-1-858b9ff67-dxwvb , spusťte následující příkaz:

kubectl logs aio-opc-opc.tcp-1-858b9ff67-dxwvb -n azure-iot-operations

Pokud chcete zobrazit popis konkrétního podu, který je čitelný pro člověka, například aio-opc-opc.tcp-1-858b9ff67-dxwvb, spusťte následující příkaz:

kubectl describe pod aio-opc-opc.tcp-1-858b9ff67-dxwvb -n azure-iot-operations

Na některých místech dokumentace k operacím Azure IoT používá příkaz kubectl apply k použití souboru manifestu Kubernetes, aby se v clusteru změnila konfigurace.

k9s

Nástroj k9s nabízí terminálové uživatelské rozhraní pro správu clusteru Kubernetes. Používá vaši kubectl konfiguraci pro připojení ke clusteru a poskytuje vizuální způsob interakce s clusterem. Jeho výchozí zobrazení obsahuje seznam všech podů aktuálně spuštěných v clusteru:

Snímek obrazovky znázorňující výchozí zobrazení k9s

Když pracujete s operacemi Azure IoT, můžete zobrazení filtrovat a zobrazit jenom pody v azure-iot-operations oboru názvů.

  1. Stisknutím klávesy Enter : otevřete panel příkazů ns a stiskněte klávesu Enter.

  2. V seznamu oborů názvů vyberte azure-iot-operations a stiskněte Enter.

  3. V seznamu podů se teď zobrazují jenom pody v oboru názvů azure-iot-operations :

    Snímek obrazovky znázorňující seznam podů k9s filtrovaných do oboru názvů azure-iot-operations

Návod

Teď můžete použít číselné klíče k použití filtrů. Předchozí snímek obrazovky ukazuje, že 0 zobrazuje všechny pody a 1 zobrazuje pouze pody v oboru názvů azure-iot-operations .

K zobrazení informací o podech můžete použít klávesové zkratky. Příklad:

  • Pokud chcete popisovat pod, vyberte ho v seznamu a stiskněte d.

    Snímek obrazovky s popisem v k9s spuštěného podu

  • Pokud chcete zobrazit protokoly podu, vyberte ho v seznamu a stiskněte l.

    Snímek obrazovky znázorňující protokol spuštěného podu v k9s

    Návod

    K procházení souboru protokolu můžete použít číselné klávesy.

Zobrazení vlastních typů prostředků jiných podů v clusteru:

  1. Stisknutím kombinace kláves Ctrl a zobrazte seznam vlastních typů prostředků.

  2. Vyberte vlastní typ prostředku, například zařízení , a stiskněte Enter.

    Návod

    Pokud chcete vyhledat vlastní typ prostředku podle názvu, zadejte / a začněte psát název požadovaného typu.

  3. Vyberte vlastní prostředek a zvolte jednu z dostupných operací. Můžete například zobrazit definici YAML profilu koncového bodu zařízení tak, že ho vyberete a stisknete y. U některých prostředků můžete konfiguraci upravit.

Následující tabulka popisuje některé vlastní typy prostředků, se kterými můžete pracovat v operacích Azure IoT:

Vlastní typ prostředku Popis
devices Představuje konfiguraci zařízení.
assets Představuje konfiguraci prostředku.
brokers, brokerlisters, , brokerauthenticationsbrokerauthorizations Představuje konfiguraci pro zprostředkovatele MQTT.
dataflows, , dataflowendpointsdataflowprofiles Představuje konfiguraci toku dat.
secrets, , secretsyncssecretproviderclasses Představuje konfiguraci pro správu tajných kódů a tajných kódů.

Nástroje MQTT

Když se seznámíte s zprostředkovatelem MQTT a otestujete ho v instanci azure IoT Operations, můžete k interakci s zprostředkovatelem použít klientské nástroje MQTT. Z bezpečnostních důvodů ale operace Azure IoT nezpřístupňuje zprostředkovatele MQTT mimo cluster. Jako alternativní řešení máte následující možnosti:

Upozornění

Tyto tři přístupy jsou vhodné pouze pro vývojová a testovací prostředí. Za žádných okolností byste je neměli používat v produkčním prostředí.

  • Připojte se k výchozímu naslouchacímu procesu v clusteru. Tato možnost používá výchozí konfiguraci a nevyžaduje žádné další aktualizace. Jste omezeni na malou sadu klientských nástrojů MQTT.

  • NodePort Pomocí služby zpřístupňte zprostředkovatele MQTT mimo cluster. Tato možnost vyžaduje aktualizaci konfigurace zprostředkovatele MQTT. Můžete použít libovolné klientské nástroje MQTT, které podporují připojení ke konkrétnímu portu.

  • LoadBalancer Pomocí služby zpřístupňte zprostředkovatele MQTT mimo cluster. Tato možnost vyžaduje aktualizaci konfigurace zprostředkovatele MQTT. Můžete použít libovolné klientské nástroje MQTT, které podporují připojení ke konkrétnímu portu.

Připojení k výchozímu naslouchacímu procesu v clusteru

Pokud se chcete připojit k výchozímu naslouchacímu procesu v clusteru, můžete nasadit pod, na kterém běží klientské nástroje MQTT založené na rozhraní příkazového řádku, jako mosquitto_sub jsou například a mosquitto_pub. Následující příkaz nasadí takový pod do clusteru:

kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/quickstarts/mqtt-client.yaml

Po spuštění podu se můžete připojit k prostředí v podu:

kubectl exec --stdin --tty mqtt-client -n azure-iot-operations -- sh

Pomocí tohoto prostředí můžete spouštět příkazy, jako mosquitto_sub je například a mosquitto_pub pracovat s zprostředkovatelem MQTT. Pokud se například chcete přihlásit k odběru všech témat v tématu azure-iot-operations/data :

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)

Všimněte si, jak příkaz načte soubor certifikátu a token ze systému souborů podu. Soubor mqtt-client.yaml manifestu tyto soubory připojí k podu.

Pokud chcete dostat jednu zprávu z azure-iot-operations/data/thermostat tématu, přidejte tuto -C 1 možnost:

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)

Pokud chcete zobrazit vlastnosti uživatele MQTT v5 ve zprávách, použijte -F %P tuto možnost:

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)

Publikování zprávy do azure-iot-operations/data/valve tématu:

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)

Po dokončení použití podu klientských nástrojů MQTT ho můžete z clusteru odstranit:

kubectl delete -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/quickstarts/mqtt-client.yaml

Další informace o této konfiguraci najdete v tématu Připojení k výchozímu naslouchacímu procesu v clusteru.

NodePort Použití nebo LoadBalancer služby

Pokud podle pokynů nakonfigurujete port uzlu nebo službu nástroje pro vyrovnávání zatížení tak, aby zpřístupnil zprostředkovatele MQTT mimo cluster, můžete použít libovolné klientské nástroje MQTT, které podporují připojení k určitému portu. Následující příklady předpokládají, že jste službu nakonfigurovali bez ověřování, autorizace nebo protokolu TLS. Teď se můžete pomocí oblíbených klientských nástrojů MQTT připojit ke zprostředkovateli MQTT na portu 1883, pokud používáte nástroj pro vyrovnávání zatížení nebo nakonfigurovaný port, pokud používáte port uzlu.

Pokud například chcete spustit opensourcový nástroj mqttui na počítači, na kterém je spuštěný cluster Kubernetes, použijte následující příkaz:

mqttui --broker mqtt://localhost:1883

Návod

Pokud jste nakonfigurovali nástroj pro vyrovnávání zatížení a port 1883 je otevřený na veřejné IP adrese hostitelského počítače, můžete se pomocí následujícího příkazu připojit ke zprostředkovateli MQTT z jiného počítače: mqttui --broker mqtt://<cluster-machine-public-ip>:1883

Pomocí mqttui tohoto nástroje se můžete přihlásit k odběru témat, publikovat zprávy a zobrazit zprávy, které procházejí přes zprostředkovatele:

Snímek obrazovky znázorňující nástroj MQTTUI zobrazující všechna témata

Pokud chcete zobrazit zprávy v určitém tématu, například azure-iot-operations/data/thermostat, použijte následující příkaz:

mqttui --broker mqtt://localhost:1883 azure-iot-operations/data/thermostat

Pokud chcete publikovat zprávu do azure-iot-operations/data/valve tématu, použijte následující příkaz:

mqttui publish --broker mqtt://localhost:1883 azure-iot-operations/data/valve open:15%

Pokud chcete na počítači, na kterém je spuštěný cluster Kubernetes, spustit opensourcový nástroj MQTT Explorer , použijte následující konfiguraci:

Snímek obrazovky znázorňující konfiguraci místního hostitele MQTT Exploreru

Pokud chcete na místním počítači spustit opensourcový nástroj MQTT Explorer pro připojení k počítači, na kterém je spuštěný cluster Kubernetes, použijte následující konfiguraci:

Snímek obrazovky znázorňující konfiguraci vzdáleného hostitele VQTT Exploreru

Ujistěte se, že je v Průzkumníku # MQTT nakonfigurované alespoň téma:

Snímek obrazovky znázorňující výchozí konfiguraci tématu V Průzkumníku MQTT

Po připojení uvidíte zprávy v tématech, která jste se přihlásili k odběru a publikování zpráv:

Snímek obrazovky s předplatnou Průzkumníka MQTT, který se přihlásil k odběru témat operací Azure IoT