Znane problemy: Operacje usługi Azure IoT
W tym artykule wymieniono znane problemy dotyczące operacji usługi Azure IoT.
Problemy z wdrażaniem i odinstalowywaniem
Jeśli wolisz nie mieć aktualizacji w klastrze bez wyraźnej zgody, należy wyłączyć aktualizacje usługi Arc po włączeniu klastra. Wynika to z faktu, że niektóre rozszerzenia systemowe są automatycznie aktualizowane przez agenta usługi Arc. Aby wyłączyć aktualizacje, dołącz flagę
--disable-auto-upgrade
w ramachaz connectedk8s connect
polecenia .Jeśli wdrożenie zakończy się niepowodzeniem z powodu błędu
"code":"LinkedAuthorizationFailed"
, oznacza to, że nie masz uprawnień Microsoft.Authorization/roleAssignments/write w grupie zasobów zawierającej klaster.Bezpośrednie edytowanie zasobów niestandardowych SecretProviderClass i SecretSync w klastrze Kubernetes może przerwać przepływ wpisów tajnych w operacjach usługi Azure IoT. W przypadku wszystkich operacji związanych z wpisami tajnymi użyj interfejsu użytkownika środowiska operacji.
Podczas wdrażania operacji usługi Azure IoT i po ich wdrożeniu mogą pojawić się ostrzeżenia dotyczące
Unable to retrieve some image pull secrets (regcred)
dzienników i zdarzeń platformy Kubernetes. Te ostrzeżenia są oczekiwane i nie mają wpływu na wdrażanie i korzystanie z operacji usługi Azure IoT.Jeśli wdrożenie zakończy się niepowodzeniem z komunikatem
Error occurred while creating custom resources needed by system extensions
, napotkano znany sporadyczne niepowodzenie, które zostanie naprawione w przyszłej wersji. Aby obejść ten krok, użyj polecenia az iot ops delete z flagą--include-deps
, aby usunąć operacje usługi Azure IoT z klastra. Gdy operacje usługi Azure IoT i jej zależności zostaną usunięte z klastra, spróbuj ponownie wykonać wdrożenie.
Broker MQTT
Zasoby brokera MQTT utworzone w klastrze przy użyciu platformy Kubernetes nie są widoczne w witrynie Azure Portal. Jest to oczekiwane, ponieważ zarządzanie składnikami operacji usługi Azure IoT przy użyciu platformy Kubernetes jest w wersji zapoznawczej, a synchronizowanie zasobów z brzegu do chmury nie jest obecnie obsługiwane.
Po początkowym wdrożeniu nie można zaktualizować zasobu brokera. Nie można wprowadzać zmian konfiguracji w kardynalności, profilu pamięci ani buforu dysku.
Aby obejść ten problem, podczas wdrażania operacji usługi Azure IoT za pomocą polecenia az iot ops init można dołączyć
--broker-config-file
parametr z plikiem konfiguracji JSON dla brokera MQTT. Aby uzyskać więcej informacji, zobacz Advanced MQTT broker config and Configure core MQTT broker settings (Konfigurowanie podstawowych ustawień brokera MQTT).Jeśli broker ma tylko jedną replikę zaplecza (
backendChain.redundancyFactor
jest ustawiona na 1), uaktualnienie operacji usługi Azure IoT może zakończyć się niepowodzeniem. Uaktualnij operacje usługi Azure IoT tylko wtedy, gdy broker ma więcej niż jedną replikę zaplecza.Mimo że diagnostyka brokera MQTT generuje dane telemetryczne we własnym temacie, podczas subskrybowania
#
tematu nadal mogą być wyświetlane komunikaty z testu samodzielnego.Wdrożenie może zakończyć się niepowodzeniem, jeśli dla klastra ustawiono kardynalność i wartości profilu pamięci. Aby rozwiązać ten problem, ustaw liczbę replik na
1
i użyj mniejszego profilu pamięci, takiego jaklow
.Nie publikuj ani nie subskrybuj tematów sondy diagnostycznej rozpoczynających się od
azedge/dmqtt/selftest
. Publikowanie lub subskrybowanie tych tematów może mieć wpływ na sondę lub testy samodzielne, co powoduje nieprawidłowe wyniki. Nieprawidłowe wyniki mogą być wyświetlane w dziennikach sond diagnostycznych, metrykach lub pulpitach nawigacyjnych. Na przykład może zostać wyświetlony problem Weryfikacja ścieżki nie powiodła się dla zdarzenia sondy z typem operacji "Publikuj" w dziennikach diagnostyki sondy.
Zarządzanie siecią warstwową usługi Azure IoT (wersja zapoznawcza)
Jeśli usługa Zarządzania siecią warstwową nie otrzymuje adresu IP podczas uruchamiania K3S na hoście z systemem Ubuntu, zainstaluj ponownie K3S bez kontrolera ruchu przychodzącego
--disable=traefik
traefik przy użyciu opcji .curl -sfL https://get.k3s.io | sh -s - --disable=traefik --write-kubeconfig-mode 644
Aby uzyskać więcej informacji, zobacz Sieć | K3s.
Jeśli zapytania DNS nie rozpoznają oczekiwanego adresu IP podczas korzystania z usługi CoreDNS uruchomionej na poziomie sieci podrzędnej, przeprowadź uaktualnienie do systemu Ubuntu 22.04 i ponownie zainstaluj usługę K3S.
Łącznik dla OPC UA
Definicje zasobów usługi Azure Device Registry umożliwiają używanie liczb w sekcji atrybutów, podczas gdy nadzorca OPC oczekuje tylko ciągów.
Po dodaniu nowego elementu zawartości z nowym profilem punktu końcowego zasobu do brokera OPC UA i wyzwoleniu ponownej konfiguracji wdrożenie
opc.tcp
zasobników zmieni się w celu uwzględnienia nowych instalacji wpisów tajnych dla nazwy użytkownika i hasła. Jeśli nowa instalacja zakończy się niepowodzeniem z jakiegoś powodu, zasobnik nie zostanie uruchomiony ponownie i dlatego stary przepływ poprawnie skonfigurowanych zasobów również zostanie zatrzymany.Nazwa podmiotu i identyfikator URI aplikacji muszą być dokładnie zgodne z podanym certyfikatem. Ponieważ nie ma krzyżowej weryfikacji, wszelkie błędy mogą spowodować odrzucenie certyfikatu aplikacji przez serwery OPC UA.
Podanie nowego nieprawidłowego certyfikatu wystąpienia aplikacji OPC UA po pomyślnej instalacji AIO może prowadzić do błędów połączenia. Aby rozwiązać ten problem, usuń wystąpienia operacji usługi Azure IoT i uruchom ponownie instalację.
Symulator OPC PLC
Jeśli tworzysz punkt końcowy zasobu dla symulatora OPC PLC, ale symulator OPC PLC nie wysyła danych do brokera MQTT, uruchom następujące polecenie, aby ustawić autoAcceptUntrustedServerCertificates=true
punkt końcowy zasobu:
ENDPOINT_NAME=<name-of-you-endpoint-here>
kubectl patch AssetEndpointProfile $ENDPOINT_NAME \
-n azure-iot-operations \
--type=merge \
-p '{"spec":{"additionalConfiguration":"{\"applicationName\":\"'"$ENDPOINT_NAME"'\",\"security\":{\"autoAcceptUntrustedServerCertificates\":true}}"}}'
Uwaga
Nie używaj tej konfiguracji w środowiskach produkcyjnych ani przedprodukcyjnych. Uwidacznianie klastra w Internecie bez odpowiedniego uwierzytelniania może prowadzić do nieautoryzowanego dostępu, a nawet ataków DDOS.
Wszystkie punkty końcowe zasobów można zastosować za pomocą następującego polecenia:
ENDPOINTS=$(kubectl get AssetEndpointProfile -n azure-iot-operations --no-headers -o custom-columns=":metadata.name")
for ENDPOINT_NAME in `echo "$ENDPOINTS"`; do \
kubectl patch AssetEndpointProfile $ENDPOINT_NAME \
-n azure-iot-operations \
--type=merge \
-p '{"spec":{"additionalConfiguration":"{\"applicationName\":\"'"$ENDPOINT_NAME"'\",\"security\":{\"autoAcceptUntrustedServerCertificates\":true}}"}}'; \
done
Jeśli symulator OPC PLC nie wysyła danych do brokera MQTT po utworzeniu nowego zasobu, uruchom ponownie zasobnik symulatora OPC PLC. Nazwa zasobnika wygląda następująco: aio-opc-opc.tcp-1-f95d76c54-w9v9c
. Aby ponownie uruchomić zasobnik, użyj k9s
narzędzia , aby zabić zasobnik lub uruchom następujące polecenie:
kubectl delete pod aio-opc-opc.tcp-1-f95d76c54-w9v9c -n azure-iot-operations
Przepływy danych
Niestandardowe zasoby przepływu danych utworzone w klastrze nie są widoczne w interfejsie użytkownika środowiska operacji. Jest to oczekiwane, ponieważ zarządzanie składnikami operacji usługi Azure IoT przy użyciu platformy Kubernetes jest w wersji zapoznawczej, a synchronizowanie zasobów z brzegu do chmury nie jest obecnie obsługiwane.
Uwierzytelnianie X.509 dla niestandardowych punktów końcowych platformy Kafka nie jest jeszcze obsługiwane.
Deserializowanie i weryfikowanie komunikatów przy użyciu schematu nie jest jeszcze obsługiwane. Określenie schematu w konfiguracji źródłowej umożliwia tylko portalowi środowiska operacji wyświetlanie listy punktów danych, ale punkty danych nie są weryfikowane względem schematu.
Utworzenie wpisu tajnego X.509 w portalu operacji powoduje wpis tajny z niepoprawnie zakodowanymi danymi. Aby obejść ten problem, utwórz wielowierszowe wpisy tajne za pośrednictwem usługi Azure Key Vault, a następnie wybierz je z listy wpisów tajnych w portalu środowiska operacji.
Podczas łączenia wielu wystąpień operacji IoT z tą samą przestrzenią nazw MQTT usługi Event Grid mogą wystąpić błędy połączenia z powodu konfliktów identyfikatora klienta. Identyfikatory klientów są obecnie pochodne od nazw zasobów przepływu danych, a w przypadku używania wzorców infrastruktury jako kodu (IaC) do wdrożenia wygenerowane identyfikatory klientów mogą być identyczne. W ramach tymczasowego obejścia dodaj losowość do nazw przepływów danych w szablonach wdrażania.