Bekannte Probleme: Azure IoT Einsatz
In diesem Artikel werden die bekannten Probleme für Azure IoT Einsatz aufgeführt.
Probleme bei Bereitstellung und Deinstallation
Wenn Sie keine Aktualisierungen an Ihrem Cluster durchführen möchten, ohne explizite Zustimmung zu erteilen, sollten Sie ARC-Updates deaktivieren, wenn Sie den Cluster aktivieren. Dies liegt daran, dass einige Systemerweiterungen automatisch vom ARC-Agent aktualisiert werden. Um Updates zu deaktivieren, schließen Sie das
--disable-auto-upgrade
-Flag als Teil desaz connectedk8s connect
-Befehls ein.Wenn die Bereitstellung mit dem
"code":"LinkedAuthorizationFailed"
-Fehler fehlschlägt, bedeutet dies, dass Sie nicht über Microsoft.Authorization/roleAssignments/Write-Berechtigungen für die Ressourcengruppe verfügen, die Ihren Cluster enthält.Die direkte Bearbeitung von SecretProviderClass und SecretSync benutzerdefinierten Ressourcen in Ihrem Kubernetes-Cluster kann den Schlüsselfluss in Azure IoT Einsatz unterbrechen. Verwenden Sie für alle Vorgänge, die sich auf geheime Schlüssel beziehen, die Benutzeroberfläche für Einsatz.
Während und nach der Bereitstellung von Azure IoT Einsatz werden möglicherweise Warnungen zu
Unable to retrieve some image pull secrets (regcred)
in den Protokollen und Kubernetes-Ereignissen angezeigt. Diese Warnungen werden erwartet und wirken sich nicht auf die Bereitstellung und Verwendung von Azure IoT Einsatz aus.Wenn Ihre Bereitstellung mit der Meldung
Error occurred while creating custom resources needed by system extensions
fehlschlägt, ist ein bekannter seltener Fehler aufgetreten, der in einem zukünftigen Release behoben wird. Lösen Sie das Problem, indem Sie den Befehl az iot ops delete mit dem Flag--include-deps
verwenden, um „Azure IoT Einsatz“ aus Ihrem Cluster zu löschen. Nachdem „Azure IoT Einsatz“ und seine Abhängigkeiten aus Ihrem Cluster gelöscht wurden, versuchen Sie erneut, die Bereitstellung durchzuführen.
MQTT-Broker
MQTT-Brokerressourcen, die mithilfe von Kubernetes in Ihrem Cluster erstellt wurden, werden im Azure-Portal nicht angezeigt. Dies wird erwartet, weil die Verwaltung von Azure IoT Einsatz-Komponenten mit Kubernetes in der Vorschauversion vorliegt und das Synchronisieren von Ressourcen vom Edge mit der Cloud derzeit nicht unterstützt wird.
Sie können die Brokerressource nach der erstmaligen Bereitstellung nicht aktualisieren. Konfigurationsänderungen an Kardinalität, Arbeitsspeicherprofil oder Datenträgerpuffer können nicht vorgenommen werden.
Als Problemumgehung können Sie beim Bereitstellen von Azure IoT Einsatz mit dem Befehl az iot ops init den Parameter
--broker-config-file
mit einer JSON-Konfigurationsdatei für den MQTT-Broker einschließen. Weitere Informationen finden Sie unter Erweiterte MQTT-Brokerkonfiguration und Konfigurieren der Grundeinstellungen für den MQTT-Broker.Wenn ein Broker nur über ein Back-End-Replikat verfügt (
backendChain.redundancyFactor
ist auf 1 festgelegt), schlägt das Upgrade von Azure IoT Einsatz möglicherweise fehl. Aktualisieren Sie Azure IoT Einsatz nur dann, wenn der Broker mehrere Back-End-Replikate aufweist.Obwohl die Diagnose des MQTT-Brokers Telemetrie zu seinem eigenen Thema erzeugt, erhalten Sie möglicherweise immer noch Nachrichten aus dem Selbsttest, wenn Sie das Thema
#
abonnieren.Die Bereitstellung schlägt möglicherweise fehl, wenn die Werte für Kardinalität und Speicherprofil für den Cluster zu groß sind. Um dieses Problem zu beheben, legen Sie die Anzahl der Replikate auf
1
fest, und verwenden Sie ein kleineres Speicherprofil, z. B.low
.Veröffentlichen oder abonnieren Sie keine Diagnosetestthemen, die mit
azedge/dmqtt/selftest
beginnen. Das Veröffentlichen oder Abonnieren dieser Themen kann sich auf die Tests oder Selbsttestprüfungen auswirken, was zu ungültigen Ergebnissen führt. Ungültige Ergebnisse werden möglicherweise in Diagnosetestprotokollen, Metriken oder Dashboards aufgeführt. Beispielsweise wird möglicherweise das Problem Pfadüberprüfung fehlgeschlagen für das Testereignis mit dem Vorgangstyp ‚Publish‘ in den Diagnosetestprotokollen angezeigt.
Mehrschichtige Azure IoT-Netzwerkverwaltung (Preview)
Wenn der Layered Network Management-Dienst beim Ausführen von K3S auf dem Ubuntu-Host keine IP-Adresse erhält, installieren Sie K3S ohne den trafeik-Eingangsdatencontroller neu, indem Sie die Option
--disable=traefik
verwenden.curl -sfL https://get.k3s.io | sh -s - --disable=traefik --write-kubeconfig-mode 644
Weitere Informationen finden Sie unter Netzwerk | K3s.
Wenn DNS-Abfragen nicht in die erwartete IP-Adresse aufgelöst werden, während sie den CoreDNS--Dienst auf untergeordneter Netzwerkebene verwenden, führen Sie ein Upgrade auf Ubuntu 22.04 durch, und installieren Sie K3S erneut.
Anschluss für OPC UA
Mithilfe von Azure Device Registry-Objektdefinitionen können Sie Zahlen im Attributabschnitt verwenden, während OPC Supervisor nur Zeichenfolgen erwartet.
Wenn Sie dem OPC UA-Broker eine neue Ressource mit einem neuen Objektendpunktprofil hinzufügen und eine Neukonfiguration auslösen, ändert sich die Bereitstellung der
opc.tcp
-Pods, um die neuen geheimen Bereitstellungen für Benutzername und Kennwort aufzunehmen. Wenn die neue Bereitstellung aus irgendeinem Grund fehlschlägt, wird der Pod nicht neu gestartet, und daher wird auch der alte Fluss für die ordnungsgemäß konfigurierten Ressourcen beendet.Der Antragstellername und der Anwendungs-URI müssen exakt mit dem bereitgestellten Zertifikat übereinstimmen. Da es keine Kreuzvalidierung gibt, können Fehler dazu führen, dass die OPC-UA-Server das Anwendungszertifikat ablehnen.
Die Bereitstellung eines neuen ungültigen OPC UA-Anwendungsinstanzzertifikats nach einer erfolgreichen Installation von AIO kann zu Verbindungsfehlern führen. Um das Problem zu beheben, löschen Sie Ihre Azure IoT Einsatz-Instanzen, und starten Sie die Installation neu.
OPC PLC-Simulator
Wenn Sie einen Ressourcenendpunkt für den OPC PLC-Simulator erstellen, der OPC PLC-Simulator aber keine Daten an den MQTT-Broker sendet, führen Sie den folgenden Befehl aus, um autoAcceptUntrustedServerCertificates=true
für den Ressourcenendpunkt festzulegen:
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}}"}}'
Achtung
Verwenden Sie diese Konfiguration nicht in Produktions- oder Vorproduktionsumgebungen. Das Offenlegen Ihres Clusters im Internet ohne ordnungsgemäße Authentifizierung kann zu nicht autorisierten Zugriffen und sogar zu DDOS-Angriffen führen.
Mit dem folgenden Befehl können Sie alle Ressourcenendpunkte patchen:
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
Wenn der OPC PLC-Simulator keine Daten an den MQTT-Broker sendet, nachdem Sie eine neue Ressource erstellt haben, starten Sie den OPC PLC-Simulatorpod neu. Der Name des Pods sieht aus wie aio-opc-opc.tcp-1-f95d76c54-w9v9c
. Um den Pod neu zu starten, verwenden Sie das k9s
-Tool, um den Pod zu beenden, oder führen Sie den folgenden Befehl aus:
kubectl delete pod aio-opc-opc.tcp-1-f95d76c54-w9v9c -n azure-iot-operations
Dataflows
Benutzerdefinierte Datenflussressourcen, die in Ihrem Cluster erstellt wurden, sind in der Benutzeroberfläche für Vorgänge nicht sichtbar. Dies wird erwartet, weil die Verwaltung von Azure IoT Einsatz-Komponenten mit Kubernetes in der Vorschauversion vorliegt und das Synchronisieren von Ressourcen vom Edge mit der Cloud derzeit nicht unterstützt wird.
Die X.509-Authentifizierung für benutzerdefinierte Kafka-Endpunkte wird bislang nicht unterstützt.
Das Deserialisieren und Überprüfen von Nachrichten mithilfe eines Schemas wird noch nicht unterstützt. Wenn Sie ein Schema in der Quellkonfiguration angeben, kann das Portal für Azure IoT Einsatz nur die Liste der Datenpunkte anzeigen, aber die Datenpunkte werden nicht anhand des Schemas überprüft.
Das Erstellen eines geheimen X.509-Schlüssels im Portal für Azure IoT Einsatz führt zu einem geheimen Schlüssel mit falsch codierten Daten. Um dieses Problem zu umgehen, erstellen Sie die mehrzeiligen geheimen Schlüssel über Azure Key Vault, und wählen Sie sie dann in der Liste der geheimen Schlüssel im Portal für Azure IoT Einsatz aus.
Beim Verbinden mehrerer IoT Einsatz-Instanzen mit demselben Event Grid MQTT-Namespace können Verbindungsfehler aufgrund von Client-ID-Konflikten auftreten. Client-IDs werden derzeit von Datenflussressourcennamen abgeleitet, und bei Verwendung von Infrastructure-as-Code- (IaC)-Mustern für die Bereitstellung sind die generierten Client-IDs möglicherweise identisch. Fügen Sie als temporäre Problemumgehung den Datenflussnamen in Ihren Bereitstellungsvorlagen Zufallswerte hinzu.