Sdílet prostřednictvím


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 na false.
    • Pokud nasazujete pomocí Azure CLI, zahrňte --disable-rsync-rules příznak příkazu az iot ops init .
  • 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říklad low.

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-w9v9ctakto. 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, aktualizujte DataflowEndpoint 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 ?$lastposlední 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é na 1 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 :

  1. 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
    
  2. 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
    
  3. 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" 
    
  4. 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:

  1. 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.
  2. 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í.
  3. 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.
  4. Na stránce Přidat přiřazení role vyberte role privilegovaného správce. Pak vyberte Přispěvatel a pak vyberte Další.
  5. Na stránce Členové přidejte nového uživatele do role.
  6. 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.