Známé problémy: Azure IoT Operations Preview
Důležité
Azure IoT Operations Preview – Služba Azure Arc je aktuálně ve verzi Preview. Tento software ve verzi Preview byste neměli používat v produkčních prostředích.
Až bude dostupná obecně dostupná verze, budete muset nasadit novou instalaci operací Azure IoT. Nebudete moct upgradovat instalaci verze Preview.
Právní podmínky, které platí pro funkce Azure, které jsou ve verzi beta, verzi Preview nebo které zatím nejsou veřejně dostupné, najdete v Dodatečných podmínkách použití pro Microsoft Azure verze Preview.
Tento článek obsahuje seznam známých problémů se službou Azure IoT Operations Preview.
Problémy s nasazením a odinstalací
Interaktivní přihlášení
az login
k Azure CLI musíte použít při nasazování operací Azure IoT. Pokud ne, může se zobrazit chyba, například CHYBA: AADSTS530003: Pro přístup k tomuto prostředku se vyžaduje správa vašeho zařízení.Pokud k odinstalaci operací Azure IoT použijete
az iot ops delete
příkaz, nemusí být některé vlastní prostředky Akri z clusteru odstraněny. Tyto instance Akri můžou způsobit problémy, pokud znovu nasadíte operace Azure IoT do stejného clusteru. Před opětovným nasazením operací Azure IoT byste měli z clusteru ručně odstranit všechny vlastní prostředky instance Akri.Pokud vaše nasazení selže s chybou
"code":"LinkedAuthorizationFailed"
, znamená to, že nemáte oprávnění Microsoft.Authorization/roleAssignments/write ve skupině prostředků, která obsahuje váš cluster.Pokud chcete tento problém vyřešit, požádejte o požadovaná oprávnění nebo proveďte následující úpravy kroků nasazení:
- Pokud se nasazuje pomocí šablony Azure Resource Manageru, nastavte
deployResourceSyncRules
parametr nafalse
. - Pokud nasazujete pomocí Azure CLI, zahrňte
--disable-rsync-rules
příznak příkazu az iot ops init .
- Pokud se nasazuje pomocí šablony Azure Resource Manageru, nastavte
Odinstalace K3s: Při odinstalaci k3s v Ubuntu pomocí
/usr/local/bin/k3s-uninstall.sh
skriptu může dojít k problému, kdy se skript zasekne při odpojování podu NFS. Alternativním řešením tohoto problému je spuštění následujícího příkazu před spuštěním skriptu odinstalace:sudo systemctl stop k3s
.
Zprostředkovatel MQTT
K výchozímu nasazení můžete přistupovat pouze pomocí IP adresy clusteru, protokolu TLS a tokenu účtu služby. Klienti mimo cluster potřebují před připojením další konfiguraci.
Po počátečním nasazení nemůžete aktualizovat vlastní prostředek zprostředkovatele. Nemůžete provádět změny konfigurace kardinality, profilu paměti nebo vyrovnávací paměti.
Jako alternativní řešení můžete při nasazování operací Azure IoT pomocí příkazu az iot ops init zahrnout
--broker-config-file
parametr s konfiguračním souborem JSON pro zprostředkovatele MQTT. Další informace najdete v tématu Pokročilá konfigurace zprostředkovatele MQTT a Konfigurace základního nastavení zprostředkovatele MQTT.Velikost vyrovnávací paměti založené na disku nemůžete nakonfigurovat, pokud ji vybraná třída úložiště nepodporuje.
I když diagnostika zprostředkovatele MQTT vytváří telemetrii podle vlastního tématu, můžete při přihlášení k
#
odběru tématu stále dostávat zprávy z vlastního testu.Některé clustery, které mají pomalé volání rozhraní API Kubernetes, můžou způsobit selhání příkazu ping selftest:
Status {Failed}. Probe failed: Ping: 1/2
spuštěníaz iot ops check
příkazu.V protokolech událostí KafkaConnector StatefulSet může dojít k chybě, například
Invalid value: "mq-to-eventhub-connector-<token>--connectionstring": must be no more than 63 characters
. Ujistěte se, že název vašeho kafkaConnectoru má maximálně 5 znaků.V protokolech konektoru Kafka a konektoru Event Gridu může dojít k chybám časového limitu. Navzdory tomu bude konektor dál fungovat a předávat zprávy.
Nasazení může selhat, pokud jsou hodnoty kardinality a profilu paměti nastavené tak, aby byly pro cluster příliš velké. Pokud chcete tento problém vyřešit, nastavte počet replik na
1
menší profil paměti, napříkladlow
.
Azure IoT Layered Network Management Preview
Pokud služba Správa vrstvené sítě při spouštění K3S na hostiteli Ubuntu nezíská IP adresu, pomocí této možnosti přeinstalujte K3S bez kontroleru
--disable=traefik
příchozího přenosu dat trafeik.curl -sfL https://get.k3s.io | sh -s - --disable=traefik --write-kubeconfig-mode 644
Další informace naleznete v tématu Sítě | K3s.
Pokud se dotazy DNS nepřeloží na očekávanou IP adresu při používání služby CoreDNS spuštěné na úrovni podřízené sítě, upgradujte na Ubuntu 22.04 a znovu nainstalujte K3S.
Konektor pro OPC UA
Všechny
AssetEndpointProfiles
v clusteru musí být nakonfigurované se stejným ověřovacím certifikátem přenosu, jinak by konektor pro OPC UA mohl vykazovat náhodné chování. Pokud se chcete tomuto problému vyhnout při použití ověřování přenosu, nakonfigurujte všechny koncové body prostředků se stejným kryptografickým otiskem pro ověřovací certifikát přenosu na portálu Azure IoT Operations (Preview).Pokud nasadíte do
AssetEndpointProfile
clusteru a konektor pro OPC UA se nemůže při prvním pokusu připojit ke nakonfigurovaným koncovým bodům, pak se konektor pro OPC UA nikdy nezkoušá.Jako alternativní řešení nejprve opravte problém s připojením. Pak buď restartujte všechny pody v clusteru s názvy podů, které začínají na "aio-opc-opc.tcp", nebo odstraňte a nasaďte
AssetEndpointProfile
ho znovu.Pokud vytváříte prostředek pomocí webového uživatelského rozhraní provozního prostředí, vlastnost předmětu pro všechny zprávy odeslané assetem je nastavena na
externalAssetId
hodnotu. V tomto případěsubject
je identifikátor GUID, nikoli popisný název prostředku.Pokud se váš zprostředkovatel pokusí připojit k nedůvěryhodnému
rejected to write to PKI
serveru, vyvolá chybu. K této chybě můžete také dojít v profilech prostředků a koncových bodů prostředku.Alternativním řešením je přidat certifikát serveru do úložiště důvěryhodných certifikátů, jak je popsáno v části Konfigurace seznamu důvěryhodných certifikátů.
Nebo můžete volitelně nakonfigurovat assetEndpointProfile bez navázání vzájemného vztahu důvěryhodnosti. Toto alternativní řešení by se nemělo používat v produkčních prostředích.
Simulátor OPC PLC
Pokud vytvoříte koncový bod prostředku pro simulátor OPC PLC, ale simulátor OPC PLC neodesílá data do zprostředkovatele MQTT, spusťte následující příkaz, který nastaví autoAcceptUntrustedServerCertificates=true
koncový bod prostředku:
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}}"}}'
Upozornění
Tuto konfiguraci nepoužívejte v produkčním nebo předprodukčním prostředí. Zveřejnění clusteru na internet bez správného ověřování může vést k neoprávněnému přístupu a dokonce útokům DDOS.
Všechny koncové body prostředku můžete opravit pomocí následujícího příkazu:
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
Pokud simulátor OPC PLC po vytvoření nového prostředku neodesílá data do zprostředkovatele MQTT, restartujte pod simulátorU OPC PLC. Název podu vypadá nějak aio-opc-opc.tcp-1-f95d76c54-w9v9c
takto. Pokud chcete pod restartovat, ukončete ho pomocí k9s
nástroje nebo spusťte následující příkaz:
kubectl delete pod aio-opc-opc.tcp-1-f95d76c54-w9v9c -n azure-iot-operations
Datové toky
Odesílání dat do ADX, ADLSv2 a Fabric OneLake není k dispozici v Azure IoT Operations verze 0.6.x. Podpora těchto koncových bodů se přidá zpět v nadcházející verzi Preview.
Toky dat ve výchozím nastavení neodesílají vlastnosti uživatelů zpráv MQTT do cílů Kafka. Mezi tyto vlastnosti uživatele patří například hodnoty
subject
, které ukládají název prostředku odesílajícího zprávu. Pokud chcete do zprávy Kafka zahrnout vlastnosti uživatele, aktualizujteDataflowEndpoint
konfiguraci tak, aby zahrnovala:copyMqttProperties: enabled
. Příklad:apiVersion: connectivity.iotoperations.azure.com/v1beta1 kind: DataflowEndpoint metadata: name: kafka-target namespace: azure-iot-operations spec: endpointType: kafkaSettings kafkaSettings: host: "<NAMESPACE>.servicebus.windows.net:9093" batching: latencyMs: 0 maxMessages: 100 tls: mode: Enabled copyMqttProperties: enabled authentication: method: SystemAssignedManagedIdentity systemAssignedManagedIdentitySettings: audience: https://<NAMESPACE>.servicebus.windows.net
V současné době nemůžete sledovat hodnotu pomocí příznaku
?$last
poslední známé hodnoty v konfiguraci toků dat. Dokud nebude opravena chyba, je alternativním řešením nasazení operací Azure IoT verze 0.5.1 a použití zpracovatele dat.Škálování profilu toků dat je
instanceCount
omezené na1
operace Azure IoT verze 0.6.x.Konfigurace pomocí Azure Resource Manageru se nepodporuje. Místo toho nakonfigurujte toky dat pomocí
kubectl
souborů YAML podle dokumentu.
Služby Akri
Když služby Akri vygenerují koncový bod prostředku pro zjištěný prostředek, může konfigurace obsahovat neplatné nastavení, které brání prostředku v připojení ke zprostředkovateli MQTT. Pokud chcete tento problém vyřešit, upravte AssetEndpointProfile
konfiguraci a odeberte "securityMode":"none"
nastavení z vlastnosti thr additionalConfiguration
. Například konfigurace koncového opc-ua-broker-opcplc-000000-50000
bodu prostředku vygenerovaného v rychlých startech by měla vypadat jako v následujícím příkladu:
apiVersion: deviceregistry.microsoft.com/v1beta1
kind: AssetEndpointProfile
metadata:
creationTimestamp: "2024-08-05T11:41:21Z"
generation: 2
name: opc-ua-broker-opcplc-000000-50000
namespace: azure-iot-operations
resourceVersion: "233018"
uid: f9cf479f-7a77-49b5-af88-18d509e9cdb0
spec:
additionalConfiguration: '{"applicationName":"opc-ua-broker-opcplc-000000-50000","keepAliveMilliseconds":10000,"defaults":{"publishingIntervalMilliseconds":1000,"queueSize":1,"samplingIntervalMilliseconds":1000},"subscription":{"maxItems":1000,"lifetimeMilliseconds":360000},"security":{"autoAcceptUntrustedServerCertificates":true,"securityPolicy":"http://opcfoundation.org/UA/SecurityPolicy#None"},"session":{"timeoutMilliseconds":60000,"keepAliveIntervalMilliseconds":5000,"reconnectPeriodMilliseconds":500,"reconnectExponentialBackOffMilliseconds":10000}}'
targetAddress: "\topc.tcp://opcplc-000000:50000"
transportAuthentication:
ownCertificates: []
userAuthentication:
mode: Anonymous
uuid: opc-ua-broker-opcplc-000000-50000
Sporadický problém může způsobit restartování podu aio-opc-asset-discovery
s následující chybou v protokolech: opcua@311 exception="System.IO.IOException: Failed to bind to address http://unix:/var/lib/akri/opcua-asset.sock: address already in use.
.
Chcete-li tento problém vyřešit, pomocí následujících kroků aktualizujte specifikaci daemonSet :
Vyhledejte cílový vlastní prostředek poskytnutý
orchestration.iotoperations.azure.com
názvem, který má na konci-ops-init-target
:kubectl get targets -n azure-iot-operations
Upravte cílovou konfiguraci a najděte
spec.components.aio-opc-asset-discovery.properties.resource.spec.template.spec.containers.env
parametr. Příklad:kubectl edit target solid-zebra-97r6jr7rw43vqv-ops-init-target -n azure-iot-operations
Do části konfigurace přidejte následující proměnné
spec.components.aio-opc-asset-discovery.properties.resource.spec.template.spec.containers.env
prostředí:- name: ASPNETCORE_URLS value: http://+8443 - name: POD_IP valueFrom: fieldRef: fieldPath: "status.podIP"
Uložte provedené změny. Konečná specifikace vypadá jako v následujícím příkladu:
apiVersion: orchestrator.iotoperations.azure.com/v1 kind: Target metadata: name: <cluster-name>-target namespace: azure-iot-operations spec: displayName: <cluster-name>-target scope: azure-iot-operations topologies: ... version: 1.0.0.0 components: ... - name: aio-opc-asset-discovery type: yaml.k8s properties: resource: apiVersion: apps/v1 kind: DaemonSet metadata: labels: app.kubernetes.io/part-of: aio name: aio-opc-asset-discovery spec: selector: matchLabels: name: aio-opc-asset-discovery template: metadata: labels: app.kubernetes.io/part-of: aio name: aio-opc-asset-discovery spec: containers: - env: - name: ASPNETCORE_URLS value: http://+8443 - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: DISCOVERY_HANDLERS_DIRECTORY value: /var/lib/akri - name: AKRI_AGENT_REGISTRATION value: 'true' image: >- edgeappmodel.azurecr.io/opcuabroker/discovery-handler:0.4.0-preview.3 imagePullPolicy: Always name: aio-opc-asset-discovery ports: ... resources: ... volumeMounts: ... volumes: ...
Webové uživatelské rozhraní provozního prostředí
Pokud se chcete přihlásit k provoznímu prostředí, potřebujete účet Microsoft Entra ID s alespoň oprávněními přispěvatele pro skupinu prostředků, která obsahuje vaši instanci Kubernetes – Azure Arc . Nemůžete se přihlásit pomocí účtu Microsoft (MSA). Vytvoření účtu v tenantovi Azure:
- Přihlaste se k webu Azure Portal pomocí stejného tenanta a uživatelského jména, které jste použili k nasazení operací Azure IoT.
- Na webu Azure Portal přejděte do části Microsoft Entra ID a vyberte Uživatelé > + Nový uživatel Vytvořit nového uživatele>. Vytvořte nového uživatele a poznamenejte si heslo, budete ho potřebovat k pozdějšímu přihlášení.
- Na webu Azure Portal přejděte do skupiny prostředků, která obsahuje vaši instanci Kubernetes – Azure Arc . Na stránce Řízení přístupu (IAM) vyberte +Přidat > přiřazení role.
- Na stránce Přidat přiřazení role vyberte role privilegovaného správce. Pak vyberte Přispěvatel a pak vyberte Další.
- Na stránce Členové přidejte nového uživatele do role.
- Výběrem možnosti Zkontrolovat a přiřadit dokončete nastavení nového uživatele.
Teď se můžete pomocí nového uživatelského účtu přihlásit k portálu Azure IoT Operations Portal.