Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano sposób używania niektórych typowych narzędzi podczas nauki, eksplorowania lub rozwiązywania problemów z wystąpieniami operacji usługi Azure IoT. Te narzędzia są dodatkiem do możliwości udostępnianych przez witrynę Azure Portal, interfejs wiersza polecenia platformy Azure, interfejs wiersza polecenia platformy Azure, interfejs użytkownika sieci Web oraz zasoby umożliwiające obserwowanie.
Narzędzia platformy Kubernetes
Składniki operacji usługi Azure IoT działają w standardowym klastrze Kubernetes. Narzędzia interfejsu kubectl wiersza polecenia i k9s umożliwiają interakcję z klastrem i zarządzanie nim.
kubectl
kubectl to narzędzie wiersza polecenia platformy Kubernetes do zarządzania klastrem. Ma wiele możliwości, które można uzyskać w oficjalnej dokumentacji platformy Kubernetes. W tym artykule opisano typowe zastosowania używane w kubectl przypadku pracy z operacjami usługi Azure IoT, takimi jak wyświetlanie uruchomionych zasobników i wyświetlanie dzienników.
Konfigurowanie kubectl nawiązywania połączenia z wystąpieniem
W artykule Prepare your Azure Arc-enabled Kubernetes cluster (Przygotowywanie klastra Kubernetes z włączoną usługą Azure Arc) opisano sposób konfigurowania kubectl połączenia z klastrem k3s podczas uruchamiania kubectl poleceń na tej samej maszynie, na której wdrożono klaster Kubernetes.
Napiwek
export KUBECONFIG=~/.kube/config Dodaj polecenie do pliku bashrc lub .bash_profile, aby nie trzeba było ustawiać KUBECONFIG zmiennej środowiskowej za każdym razem, gdy otworzysz nowe okno terminalu.
Jeśli wystąpienie operacji usługi Azure IoT zostało wdrożone w usłudze AKS-EE z obsługą usługi Arc, kubectl konfiguracja zostanie automatycznie skonfigurowana. Polecenia można uruchamiać kubectl bezpośrednio z wiersza polecenia na maszynie, na której wdrożono klaster.
Można również uruchamiać kubectl polecenia z komputera klienckiego lokalnego, a nie z maszyny, na której wdrożono klaster z obsługą usługi Arc:
W ramach jednorazowego kroku użyj protokołu SSH, aby nawiązać połączenie z maszyną, na której wdrożono klaster, i uruchom następujące polecenia. Pamiętaj, aby zastąpić <your-name> ciąg nazwą:
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
Zanotuj token. Ten token służy do uwierzytelniania podczas uruchamiania kubectl poleceń na komputerze klienckim. Teraz możesz odłączyć się od maszyny z uruchomionym klastrem Kubernetes.
Aby nawiązać połączenie z klastrem za pomocą kubectl maszyny klienckiej, otwórz dwa terminale:
W pierwszym terminalu uruchom następujące polecenie, aby skonfigurować serwer proxy w celu nawiązania połączenia z klastrem. Pamiętaj, aby zastąpić wartości dla trzech symboli zastępczych:
az connectedk8s proxy -n <your-arc-enabled-cluster-name> -g <your-arc-enabled-cluster-resource-group> --token <token-from-previous-step>Pozostaw ten terminal otwarty podczas uruchamiania
kubectlpoleceń w drugim terminalu.W drugim terminalu można uruchamiać
kubectlpolecenia względem klastra zdalnego. Aby na przykład wyświetlić listę zasobników wazure-iot-operationsprzestrzeni nazw:kubectl get pods -n azure-iot-operationsNapiwek
Możesz również uruchamiać polecenia, takie jak
k9s, które używają konfiguracji w tym terminalukubectl.Kontekst
kubectlpozostaje ustawiony na klaster zdalny do momentu zamknięcia pierwszego terminalu.
Aby dowiedzieć się więcej, zobacz Używanie połączenia klastra w celu bezpiecznego nawiązywania połączenia z klastrami Kubernetes z włączoną usługą Azure Arc.
Przestrzenie nazw
Domyślnie operacje Arc i Azure IoT używają następujących przestrzeni nazw w klastrze Kubernetes:
-
azure-iot-operationsdla składników operacji usługi Azure IoT. -
azure-arcdla składników platformy Kubernetes z obsługą usługi Azure Arc.
Napiwek
Aby wyświetlić wszystkie przestrzenie nazw w klastrze, uruchom następujące polecenie: kubectl get namespaces.
Typowe kubectl polecenia
Aby wyświetlić wszystkie zasobniki uruchomione w azure-iot-operations przestrzeni nazw, uruchom następujące polecenie:
kubectl get pods -n azure-iot-operations
Dane wyjściowe wyglądają jak w poniższym przykładzie:
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
Aby wyświetlić dzienniki dla określonego zasobnika, takiego jak aio-opc-opc.tcp-1-858b9ff67-dxwvb , uruchom następujące polecenie:
kubectl logs aio-opc-opc.tcp-1-858b9ff67-dxwvb -n azure-iot-operations
Aby wyświetlić czytelny dla człowieka opis określonego zasobnika, takiego jak aio-opc-opc.tcp-1-858b9ff67-dxwvb , uruchom następujące polecenie:
kubectl describe pod aio-opc-opc.tcp-1-858b9ff67-dxwvb -n azure-iot-operations
W niektórych miejscach dokumentacja operacji usługi Azure IoT używa polecenia kubectl apply w celu zastosowania pliku manifestu kubernetes w celu wprowadzenia zmiany konfiguracji w klastrze.
k9s
Narzędzie k9s oferuje interfejs użytkownika oparty na terminalu do zarządzania klastrem Kubernetes. Używa konfiguracji kubectl do nawiązywania połączenia z klastrem i zapewnia wizualny sposób interakcji z klastrem. Widok domyślny zawiera listę wszystkich zasobników aktualnie uruchomionych w klastrze:
Podczas pracy z operacjami usługi Azure IoT można filtrować widok, aby wyświetlić tylko zasobniki w azure-iot-operations przestrzeni nazw.
Wpisz
:polecenie , aby otworzyć panel poleceń, a następnie wpisznsi naciśnij Enter.Na liście przestrzeni nazw wybierz
azure-iot-operationsi naciśnij Enter.Lista zasobników zawiera teraz tylko zasobniki w przestrzeni nazw azure-iot-operations :
Napiwek
Teraz możesz użyć kluczy liczbowych do zastosowania filtrów. Na poprzednim zrzucie ekranu pokazano, że 0 pokazuje wszystkie zasobniki, a 1 zawiera tylko zasobniki w przestrzeni nazw azure-iot-operations.
Możesz użyć skrótów, aby wyświetlić informacje o zasobnikach. Na przykład:
Aby opisać zasobnik, wybierz go na liście i naciśnij d.
Aby wyświetlić dzienniki zasobnika, wybierz go na liście i naciśnij l.
Napiwek
Możesz użyć kluczy liczbowych, aby poruszać się po pliku dziennika.
Aby wyświetlić niestandardowe typy zasobów inne zasobniki w klastrze:
Naciśnij Ctrl-a, aby wyświetlić listę niestandardowych typów zasobów.
Wybierz typ zasobu niestandardowego, taki jak urządzenia i naciśnij Enter.
Napiwek
Aby wyszukać niestandardowy typ zasobu według nazwy, wpisz / , a następnie zacznij wpisywać nazwę szukanego typu.
Wybierz zasób niestandardowy i wybierz jedną z dostępnych operacji. Możesz na przykład wyświetlić definicję YAML profilu punktu końcowego urządzenia, wybierając go i naciskając y. W przypadku niektórych zasobów można edytować konfigurację.
W poniższej tabeli opisano niektóre typy zasobów niestandardowych, z których można pracować w operacjach usługi Azure IoT:
| Niestandardowy typ zasobu | opis |
|---|---|
devices |
Reprezentuje konfigurację urządzenia. |
assets |
Reprezentuje konfigurację zasobu. |
brokers, , brokerlisters, , brokerauthenticationsbrokerauthorizations |
Reprezentują konfigurację brokera MQTT. |
dataflows, , dataflowendpointsdataflowprofiles |
Reprezentuje konfigurację przepływu danych. |
secrets, , secretsyncssecretproviderclasses |
Reprezentują konfigurację dla wpisów tajnych i zarządzania wpisami tajnymi. |
Narzędzia MQTT
Gdy poznasz i przetestujesz brokera MQTT w wystąpieniu operacji usługi Azure IoT, możesz użyć narzędzi klienckich MQTT do interakcji z brokerem. Jednak ze względów bezpieczeństwa operacje usługi Azure IoT nie uwidacznia brokera MQTT poza klastrem. W ramach pracy dostępne są następujące opcje:
Uwaga
Te trzy podejścia są odpowiednie tylko dla środowisk programistycznych i testowych. W żadnym wypadku nie należy ich używać w środowisku produkcyjnym.
Połącz się z odbiornikiem domyślnym wewnątrz klastra. Ta opcja używa konfiguracji domyślnej i nie wymaga dodatkowych aktualizacji. Ograniczasz się do małego zestawu narzędzi klienckich MQTT.
NodePortUżyj usługi, aby uwidocznić brokera MQTT poza klastrem. Ta opcja wymaga zaktualizowania konfiguracji brokera MQTT. Możesz użyć dowolnych narzędzi klienckich MQTT, które obsługują nawiązywanie połączenia z określonym portem.LoadBalancerUżyj usługi, aby uwidocznić brokera MQTT poza klastrem. Ta opcja wymaga zaktualizowania konfiguracji brokera MQTT. Możesz użyć dowolnych narzędzi klienckich MQTT, które obsługują nawiązywanie połączenia z określonym portem.
Nawiązywanie połączenia z odbiornikiem domyślnym w klastrze
Aby nawiązać połączenie z odbiornikiem domyślnym w klastrze, możesz wdrożyć zasobnik, który uruchamia oparte na interfejsie wiersza polecenia narzędzia klienckie MQTT, takie jak mosquitto_sub i mosquitto_pub. Następujące polecenie wdraża taki zasobnik w klastrze:
kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/quickstarts/mqtt-client.yaml
Po uruchomieniu zasobnika można nawiązać połączenie z powłoką w zasobniku:
kubectl exec --stdin --tty mqtt-client -n azure-iot-operations -- sh
Użyj tej powłoki do uruchamiania poleceń, takich jak mosquitto_sub i mosquitto_pub do interakcji z brokerem MQTT. Aby na przykład zasubskrybować wszystkie tematy w temacie 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)
Zwróć uwagę, że polecenie ładuje plik certyfikatu i token z systemu plików zasobnika. Plik manifestu mqtt-client.yaml instaluje te pliki w zasobniku.
Aby odebrać pojedynczy komunikat z tematu azure-iot-operations/data/thermostat , dodaj -C 1 opcję:
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)
Aby wyświetlić właściwości użytkownika MQTT v5 w komunikatach, użyj -F %P opcji:
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)
Aby opublikować komunikat w temacie azure-iot-operations/data/valve :
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 zakończeniu korzystania z zasobnika narzędzi klienckich MQTT można go usunąć z klastra:
kubectl delete -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/quickstarts/mqtt-client.yaml
Aby dowiedzieć się więcej na temat tej konfiguracji, zobacz Nawiązywanie połączenia z odbiornikiem domyślnym w klastrze.
NodePort Korzystanie z usługi lub LoadBalancer
Jeśli wykonasz kroki konfigurowania portu węzła lub usługi równoważenia obciążenia w celu uwidocznienia brokera MQTT poza klastrem, możesz użyć dowolnych narzędzi klienckich MQTT, które obsługują nawiązywanie połączenia z określonym portem. W poniższych przykładach założono, że skonfigurowano usługę bez uwierzytelniania, autoryzacji ani protokołu TLS. Teraz możesz użyć ulubionych narzędzi klienckich MQTT do nawiązania połączenia z brokerem MQTT na porcie 1883, jeśli używasz modułu równoważenia obciążenia lub skonfigurowanego portu, jeśli używasz portu węzła.
Aby na przykład uruchomić narzędzie mqttui typu open source na maszynie, na której działa klaster Kubernetes, użyj następującego polecenia:
mqttui --broker mqtt://localhost:1883
Napiwek
Jeśli skonfigurowano moduł równoważenia obciążenia i port 1883 jest otwarty na publicznym adresie IP maszyny hosta, możesz użyć następującego polecenia, aby nawiązać połączenie z brokerem MQTT z innej maszyny: mqttui --broker mqtt://<cluster-machine-public-ip>:1883
Za pomocą mqttui narzędzia można subskrybować tematy, publikować komunikaty i wyświetlać komunikaty przepływające przez brokera:
Aby wyświetlić komunikaty w określonym temacie, takim jak azure-iot-operations/data/thermostat, użyj następującego polecenia:
mqttui --broker mqtt://localhost:1883 azure-iot-operations/data/thermostat
Aby opublikować komunikat w temacie azure-iot-operations/data/valve , użyj następującego polecenia:
mqttui publish --broker mqtt://localhost:1883 azure-iot-operations/data/valve open:15%
Aby uruchomić narzędzie MQTT Explorer typu open source na maszynie, na której działa klaster Kubernetes, użyj następującej konfiguracji:
Aby uruchomić narzędzie MQTT Explorer typu open source na komputerze lokalnym w celu nawiązania połączenia z maszyną, na której działa klaster Kubernetes, użyj następującej konfiguracji:
Upewnij się, że w Eksploratorze # MQTT skonfigurowano co najmniej temat:
Po nawiązaniu połączenia możesz zobaczyć komunikaty w tematach subskrybowanych i publikowanych wiadomości:
Wskazówki
Poniżej przedstawiono kilka dodatkowych wskazówek, które ułatwiają pracę z Twoim wystąpieniem Azure IoT Operations:
Znajdź niestandardową lokalizację swojej instancji operacyjnej Azure IoT
Aby znaleźć niestandardową lokalizację skojarzoną z wystąpieniem Azure IoT Operations, użyj następującego polecenia:
az iot ops show --name <YOUR_INSTANCE_NAME> --resource-group <YOUR_RESOURCE_GROUP> --query "extendedLocation.name" --output tsv
Lokalizację niestandardową można również znaleźć w Azure Portal na stronie przeglądu wystąpienia w polu Lokalizacja rozszerzona.