Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano użycie niektórych typowych narzędzi podczas nauki, rozwiązywania problemów lub eksplorowania instancji Operacje Azure IoT. Te narzędzia są dodatkiem do możliwości udostępnianych przez portal Azure, Azure CLI, interfejs użytkownika sieci Web środowiska operacji oraz obserwalność zasobów.
Narzędzia platformy Kubernetes
Komponenty Operacje Azure IoT działają w standardowym klastrze Kubernetes. Możesz użyć narzędzi CLI kubectl i k9s do interakcji z klastrem i zarządzania nim.
Zarządzanie składnikami przy użyciu manifestów wdrażania platformy Kubernetes
Ważna
Korzystanie z manifestów wdrażania platformy Kubernetes nie jest obsługiwane w środowiskach produkcyjnych i powinno być używane tylko do debugowania i testowania.
Ogólnie rzecz biorąc, Operacje Azure IoT używa platformy Azure Arc do zapewnienia środowiska chmury hybrydowej, w którym można zarządzać konfiguracją za pomocą Azure Resource Manager (ARM) i narzędzi frontonu, takich jak portal Azure, Bicep i Azure CLI.
Jednak w środowisku debugowania lub testowania można zarządzać składnikami Operacje Azure IoT przy użyciu manifestów wdrażania platformy Kubernetes YAML. Oznacza to, że można użyć narzędzi takich jak kubectl do zarządzania niektórymi składnikami Operacje Azure IoT. Ta funkcja ma pewne ograniczenia:
- O ile nie włączysz synchronizacji zasobów w Operacje Azure IoT przy użyciu polecenia
az iot ops enable-rsync, zmiany wprowadzone w zasobach przy użyciu manifestów wdrażania platformy Kubernetes nie są synchronizowane z Azure. Aby dowiedzieć się więcej na temat synchronizacji zasobów, zobacz Synchronizacja zasobów. - Nawet jeśli synchronizacja zasobów jest włączona, zupełnie nowe zasoby utworzone przy użyciu manifestów wdrażania platformy Kubernetes nie są synchronizowane z Azure. Synchronizowane są tylko zmiany istniejących zasobów.
Ważna
W środowisku produkcyjnym chmura jest zawsze źródłem prawdy. Zawsze twórz i modyfikuj zasoby za pomocą Azure — przy użyciu środowiska operacji, portalu Azure, Azure CLI lub szablonów usługi ARM/Bicep. Tworzenie zasobów bezpośrednio w klastrze lub edytowanie istniejących zasobów niestandardowych Kubernetes może spowodować, że chmura i krawędź nie będą zsynchronizowane i nie jest wspierane w środowiskach produkcyjnych.
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 kubectl podczas pracy z Operacje Azure IoT, takie jak wyświetlanie uruchomionych zasobników i wyświetlanie dzienników.
Skonfiguruj kubectl, aby połączyć się z wystąpieniem
W Prepare klastra Kubernetes z włączoną obsługą Azure Arc opisano sposób konfigurowania kubectl w celu nawiązania połączenia z klastrem k3s podczas uruchamiania poleceń kubectl na tym samym komputerze, na którym wdrożono klaster Kubernetes.
Wskazówka
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 Operacje Azure IoT zostało wdrożone w usłudze AKS-EE obsługiwanej przez Arc, konfiguracja kubectl zostanie automatycznie ustawiona. Możesz uruchamiać kubectl polecenia bezpośrednio z wiersza polecenia na maszynie, na której wdrożyłeś 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. Upewnij się, że zastąpisz <your-name> swoim imieniem.
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 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 poleceń
kubectlw drugim terminalu.W drugim terminalu można uruchamiać
kubectlpolecenia względem klastra zdalnego. Aby na przykład wyświetlić listę podów wazure-iot-operationsprzestrzeni nazw:kubectl get pods -n azure-iot-operationsWskazówka
Możesz również uruchamiać polecenia, takie jak
k9s, które w tym terminalu używają konfiguracjikubectl.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 obsługą Azure Arc.
Przestrzenie nazw
Domyślnie usługi Arc i Operacje Azure IoT używają następujących przestrzeni nazw w klastrze Kubernetes:
-
azure-iot-operationsdla składników Operacje Azure IoT. -
azure-arcdla składników platformy Kubernetes z obsługą Azure Arc.
Wskazówka
Aby wyświetlić wszystkie przestrzenie nazw w klastrze, uruchom następujące polecenie: kubectl get namespaces.
Typowe kubectl polecenia
Aby wyświetlić wszystkie zasobniki działające 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 podu, 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 Operacje Azure IoT używa polecenia kubectl apply aby zastosować plik 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 Operacje Azure IoT można filtrować widok, aby wyświetlić tylko zasobniki w przestrzeni nazw azure-iot-operations.
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 :
Wskazówka
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ć klawiszy skrótu, aby wyświetlić informacje o podach. Na przykład:
Aby opisać zasobnik, wybierz go na liście i naciśnij d.
Aby wyświetlić dzienniki dla poda, wybierz go na liście i naciśnij l.
Wskazówka
Możesz użyć kluczy liczbowych, aby poruszać się po pliku dziennika.
Aby wyświetlić niestandardowe typy zasobów inne niż pody 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.
Wskazówka
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żesz korzystać w Operacje Azure IoT.
| Niestandardowy typ zasobu | opis |
|---|---|
devices |
Reprezentuje konfigurację urządzenia. |
assets |
Reprezentuje konfigurację zasobu. |
brokers, , brokerlisters, , brokerauthenticationsbrokerauthorizations |
Reprezentują konfigurację brokera MQTT. |
dataflows, dataflowendpoints, dataflowprofiles |
Reprezentuje konfigurację przepływu danych. |
secrets, secretsyncs, secretproviderclasses |
Reprezentują konfigurację dla wpisów tajnych i zarządzania wpisami tajnymi. |
Narzędzia MQTT
Aby korzystać z brokera MQTT w wystąpieniu Operacje Azure IoT do nauki, testowania lub rozwiązywania problemów, najpierw udostępnij broker, korzystając z jednego z nieprodukcyjnych sposobów opisanych w artykule Testowanie łączności z brokerem MQTT przy użyciu klientów MQTT: połącz się z wnętrza klastra albo udostępnij brokera poza klastrem za pomocą usługi NodePort lub LoadBalancer. W pozostałej części tej sekcji przedstawiono narzędzia do rozwiązywania problemów, które można uruchomić względem tych odbiorników testowych.
Uwaga
Te podejścia są odpowiednie tylko dla środowisk programistycznych i testowych. Nigdy nie używaj ich w środowisku produkcyjnym.
Nawiązywanie połączenia z odbiornikiem domyślnym w klastrze
Wdróż zasobnik mqtt-client i otwórz w nim powłokę zgodnie z opisem w temacie Nawiązywanie połączenia z odbiornikiem domyślnym w klastrze. Następnie w powłoce użyj poleceń mosquitto_sub i mosquitto_pub, aby sprawdzać i publikować komunikaty w tematach danych usługi Operacje Azure IoT.
Aby na przykład zasubskrybować wszystkie tematy w obszarze 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)
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 usuń zasobnik klienta:
kubectl delete pod mqtt-client -n azure-iot-operations
Użyj usługi NodePort 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
Wskazówka
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
Oto dodatkowe wskazówki, które ułatwią pracę z instancją Operacje Azure IoT:
Znajdź niestandardową lokalizację wystąpienia Operacje Azure IoT
Aby znaleźć lokalizację niestandardową skojarzoną z wystąpieniem Operacje Azure IoT, 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 portalu Azure na stronie przeglądu wystąpienia w polu rozszerzona lokalizacja.