Compartir a través de


Problemas conocidos: Versión preliminar de Azure IoT Operations

Importante

Operaciones de IoT de Azure, habilitado por Azure Arc, está actualmente en VERSIÓN PRELIMINAR. No se debería usar este software en versión preliminar en entornos de producción.

Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure para conocer los términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.

En este artículo se enumeran los problemas conocidos de la versión preliminar de Operaciones de IoT de Azure.

Problemas de implementación y desinstalación

  • Al implementar Operaciones de IoT de Azure, se debe usar el inicio de sesión interactivo de la CLI de Azure az login. Si no lo hace, podría ver un error como ERROR: AADSTS530003: El dispositivo debe ser administrado para acceder a este recurso.

  • Si se produce un error en la implementación con el "code":"LinkedAuthorizationFailed"error, significa que no tiene permisos Microsoft.Authorization/roleAssignments/write en el grupo de recursos que contiene el clúster.

    Para resolver este problema, solicite los permisos necesarios o realice los siguientes ajustes en los pasos de implementación:

    • Si se implementa con una plantilla de Azure Resource Manager, establezca el deployResourceSyncRulesparámetro como false.
    • Si se implementa con la CLI de Azure, incluya la --disable-rsync-rulesmarca con el comando az iot ops init.
  • Desinstalación de K3s: Cuando desinstale k3s en Ubuntu utilizando el script /usr/local/bin/k3s-uninstall.sh, puede encontrarse con un problema en el que el script se bloquea al desmontar el pod NFS. Una solución alternativa para este problema es ejecutar el siguiente comando antes de ejecutar el script de desinstalación: sudo systemctl stop k3s.

Versión preliminar de MQ de Azure IoT

  • Solo puede acceder a la implementación predeterminada mediante la dirección IP del clúster, TLS y un token de cuenta de servicio. Los clientes fuera del clúster necesitan una configuración adicional para poder conectarse.

  • No puede actualizar el recurso personalizado del agente después de la implementación inicial. No puede realizar cambios de configuración en la cardinalidad, el perfil de memoria o el búfer de disco.

  • No puede configurar el tamaño de un búfer respaldado por disco a menos que la clase de almacenamiento elegida lo admita.

  • Aunque el servicio de diagnóstico de IoT MQ produce telemetría en su propio tema, es posible que siga recibiendo mensajes del autodiagnóstico cuando se suscriba al tema #.

  • Algunos clústeres que tienen llamadas API de Kubernetes lentas pueden dar lugar a errores de ping de prueba propia: Status {Failed}. Probe failed: Ping: 1/2 desde el comando en ejecución az iot ops check.

  • Es posible que encuentre un error en los registros de eventos StatefulSet de KafkaConnector, como Invalid value: "mq-to-eventhub-connector-<token>--connectionstring": must be no more than 63 characters. Asegúrese de que el nombre de KafkaConnector tiene un máximo de 5 caracteres.

  • Es posible que se produzcan errores de tiempo de espera en los registros del conector Kafka y del conector Event Grid. A pesar de esto, el conector seguirá funcionando y reenviando mensajes.

Versión preliminar de Administración de redes superpuestas de Azure IoT

  • Si el servicio Layered Network Management no recibe una dirección IP cuando K3S se ejecuta en el host de Ubuntu, vuelva a instalar K3S sin el controlador de entrada trafeik y use la opción --disable=traefik.

    curl -sfL https://get.k3s.io | sh -s - --disable=traefik --write-kubeconfig-mode 644
    

    Para obtener más información, consulte Redes | K3s.

  • Si las consultas de DNS no se resuelven en la dirección IP esperada mientras se usa el servicio CoreDNS que se ejecuta a nivel de red secundaria, actualice a Ubuntu 22.04 y vuelva a instalar K3S.

Versión preliminar Agente de OPC UA de Azure IoT

  • Todos los AssetEndpointProfiles del clúster deben configurarse con el mismo certificado de autenticación de transporte; de lo contrario, OPC UA Broker podría mostrar un comportamiento aleatorio. Para evitar este problema al utilizar la autenticación de transporte, configure todos los puntos finales de activos con la misma huella digital para el certificado de autenticación de transporte en el portal de Operaciones de IoT de Azure (versión preliminar).

  • Si implementa un AssetEndpointProfile en el clúster y OPC UA Broker no se puede conectar al punto de conexión configurado en el primer intento, OPC UA Broker nunca reintenta la conexión.

    Como solución alternativa, corrija primero el problema de conexión. Luego, reinicie todos los pods del clúster cuyos nombres empiecen por "aio-opc-opc.tcp", o elimine AssetEndpointProfile e impleméntelo de nuevo.

Simulador de OPC PLC

Si crea un punto de conexión de recurso para el simulador de OPC PLC, pero el simulador de OPC PLC no envía datos al agente de IoT MQ, ejecute el siguiente comando para establecer autoAcceptUntrustedServerCertificates=true para el punto de conexión de recurso:

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}}"}}'

Precaución

No use esta configuración en entornos de producción o preproducción. Exponer el clúster a Internet sin una autenticación adecuada podría resultar en accesos no autorizados e, incluso, ataques DDOS.

Puede aplicar revisiones a todos los puntos de conexión de recursos con el siguiente comando:

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

Si el simulador de OPC PLC no envía datos al agente de IoT MQ después de crear un nuevo recurso, reinicie el pod del simulador de OPC PLC. El nombre del pod es similar a aio-opc-opc.tcp-1-f95d76c54-w9v9c. Para reiniciar el pod, use la herramienta k9s para eliminar el pod o ejecute el siguiente comando:

kubectl delete pod aio-opc-opc.tcp-1-f95d76c54-w9v9c -n azure-iot-operations

Procesador de datos de Azure IoT (versión preliminar)

  • Si ve errores de implementación con pods de Procesador de Datos, asegúrese de que al crear la instancia de Azure Key Vault eligió directiva de acceso de Vault como Modelo de permisos.

  • Si la extensión del procesador de datos no se puede desinstalar, ejecute los siguientes comandos e inténtelo de nuevo:

    kubectl delete pod  aio-dp-reader-worker-0 --grace-period=0 --force -n azure-iot-operations
    kubectl delete pod  aio-dp-runner-worker-0 --grace-period=0 --force -n azure-iot-operations
    
  • Si las modificaciones que realiza en una canalización no se aplican a los mensajes, ejecute los siguientes comandos para propagar los cambios:

    kubectl rollout restart deployment aio-dp-operator -n azure-iot-operations 
    
    kubectl rollout restart statefulset aio-dp-runner-worker -n azure-iot-operations 
    
    kubectl rollout restart statefulset aio-dp-reader-worker -n azure-iot-operations
    
  • Es posible que una pérdida momentánea de comunicación con los pods del agente IoT MQ pueda pausar el procesamiento de las canalizaciones de datos. También puede ver errores como service account token expired. Si observa que esto sucede, ejecute los siguientes comandos:

    kubectl rollout restart statefulset aio-dp-runner-worker -n azure-iot-operations
    kubectl rollout restart statefulset aio-dp-reader-worker -n azure-iot-operations
    
  • Si los datos están dañados en la tabla lakehouse de Microsoft Fabric en la que está escribiendo la canalización del Procesador de Datos, asegúrese de que ningún otro proceso está escribiendo en la tabla. Si escribe en la tabla lakehouse de Microsoft Fabric desde varios orígenes, es posible que vea datos dañados en la tabla.

Versión preliminar de Azure IoT Akri

Un problema esporádico podría provocar que el pod aio-opc-asset-discovery se reinicie con el siguiente error en los registros: opcua@311 exception="System.IO.IOException: Failed to bind to address http://unix:/var/lib/akri/opcua-asset.sock: address already in use..

Para solucionar este problema, siga estos pasos para actualizar la especificación DaemonSet:

  1. Busque el recurso personalizado de destino proporcionado por orchestration.iotoperations.azure.com con un nombre que termine en -ops-init-target:

    kubectl get targets -n azure-iot-operations
    
  2. Edite la configuración de destino y busque el parámetro spec.components.aio-opc-asset-discovery.properties.resource.spec.template.spec.containers.env. Por ejemplo:

    kubectl edit target solid-zebra-97r6jr7rw43vqv-ops-init-target -n azure-iot-operations
    
  3. Agregue las siguientes variables de entorno a la configuración:

- name: ASPNETCORE_URLS 
  value: http://+8443 
- name: POD_IP 
  valueFrom: 
    fieldRef: 
      fieldPath: "status.podIP" 
  1. Guarde los cambios. La especificación final es parecida a la del ejemplo siguiente:
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: ...

Portal de Operaciones de IoT de Azure (versión preliminar)

Para iniciar sesión en el portal de operaciones de IoT de Azure, necesita una cuenta de identificador de Microsoft Entra con al menos permisos de colaborador para el grupo de recursos que contiene la instancia de Kubernetes - Azure Arc. No puede iniciar sesión con una cuenta Microsoft (MSA). Para crear una cuenta en el inquilino de Azure:

  1. Inicie sesión en Azure Portal con el mismo inquilino y nombre de usuario que usó para implementar operaciones de IoT de Azure.
  2. En Azure Portal, vaya a la sección Microsoft Entra ID, seleccione Usuarios> +Nuevo usuario > Crear nuevo usuario. Cree un nuevo usuario y anote la contraseña; debe iniciar sesión más adelante.
  3. En Azure Portal, vaya al grupo de recursos que contiene la instancia de Kubernetes - Azure Arc. En la página Control de acceso (IAM), seleccione +Agregar> Agregar asignación de roles.
  4. En la página Agregar asignación de roles, seleccione Roles de administrador con privilegios. A continuación, seleccione colaborador y después seleccione Siguiente.
  5. En la página Miembros, agregue el nuevo usuario al rol.
  6. Seleccione Revisar y asignar para completar la configuración del nuevo usuario.

Ahora puede usar la nueva cuenta de usuario para iniciar sesión en el Portal de operaciones de IoT de Azure.