已知問題:Azure IoT 操作
本文列出 Azure IoT 作業的已知問題。
部署和解除安裝問題
如果您不想在未明確同意的情況下對叢集進行任何更新,您應該在啟用叢集時停用 Arc 更新。 這是因為 Arc 代理程式會自動更新某些系統延伸模組。 若要停用更新,請在
--disable-auto-upgrade
命令中包含az connectedk8s connect
旗標。如果您的部署因
"code":"LinkedAuthorizationFailed"
錯誤而失敗,表示您沒有 Microsoft.Authorization/roleAssignments/write 包含叢集的資源群組權限。直接編輯 Kubernetes 叢集中的 SecretProviderClass 和 SecretSync 自定義資源,可能會中斷 Azure IoT 作業中的秘密流程。 對於與秘密相關的任何作業,請使用作業體驗UI。
在部署 Azure IoT 作業期間和之後,您可能會在記錄和 Kubernetes 事件中看到有關
Unable to retrieve some image pull secrets (regcred)
的警告。 這些警告是預期的,且不會影響 Azure IoT 作業的部署和使用。
MQTT 代理
使用 Kubernetes 在叢集中建立的 MQTT 訊息代理程序資源不會 Azure 入口網站。 這是預期,因為 目前不支援使用 Kubernetes 管理 Azure IoT Operations 元件,且目前不支援將資源從邊緣同步處理至雲端。
在初始部署之後,您無法更新 Broker 資源。 您無法對基數、記憶體設定檔或磁碟緩衝區進行設定變更。
因應措施是在使用 az iot ops init 命令部署 Azure IoT 操作時,使用 MQTT 代理程式 JSON 設定檔來包含
--broker-config-file
參數。 如需詳細資訊,請參閱進階 MQTT 代理程式設定和設定核心 MQTT 代理程式設定。如果 Broker 只有一個後端復本(
backendChain.redundancyFactor
設定為 1)升級 Azure IoT 作業可能會失敗。 只有在 Broker 有多個後端複本時,才升級 Azure IoT 作業。雖然 MQTT 代理程式的診斷在其本身的主題上產生遙測資料,但當您訂閱
#
主題時,您仍可能會從自我測試取得訊息。如果基數和記憶體設定檔的設定值對叢集而言太大,部署可能會失敗。 若要解決此問題,請將複本計數設定為
1
,並使用較小的記憶體設定檔,例如low
。請勿發佈或訂閱以
azedge/dmqtt/selftest
開頭的診斷探查主題。 發佈或訂閱這些主題可能會影響探查或自我測試檢查,導致結果無效。 診斷探查記錄、計量或儀錶板中可能會列出無效的結果。 例如,您可能會在診斷探查記錄中看到探查事件路徑驗證失敗的問題 ,其作業類型為 'Publish' 。
Azure IoT 分層網路管理 (預覽)
如果在 Ubuntu 主機上執行 K3S 時,分層式網路管理服務未取得 IP 位址,請使用
--disable=traefik
選項,重新安裝 K3S,而不使用 trafeik 輸入控制器。curl -sfL https://get.k3s.io | sh -s - --disable=traefik --write-kubeconfig-mode 644
如需詳細資訊,請參閱網路 | K3s。
如果在子網路層級上執行 CoreDNS 服務時,DNS 查詢未解析為預期的 IP 位址,請升級至 Ubuntu 22.04 並重新安裝 K3S。
OPC UA 連接器
Azure Device Registry 資產定義可讓您在屬性區段中使用數位,而 OPC 主管只預期字串。
當您將具有新資產端點配置檔的新資產新增至 OPC UA 訊息代理程式並觸發重新設定時,Pod 的
opc.tcp
部署會變更,以容納使用者名稱和密碼的新秘密掛接。 如果新的掛接因某些原因而失敗,Pod 不會重新啟動,因此正確設定資產的舊流程也會停止。主體名稱和應用程式 URI 必須完全符合提供的憑證。 因為沒有任何交叉驗證,所以任何錯誤都可能導致 OPC UA 伺服器拒絕應用程式憑證。
在成功安裝 AIO 之後,提供新的無效 OPC UA 應用程式實例憑證可能會導致連線錯誤。 若要解決此問題,請刪除您的 Azure IoT 作業實例,然後重新啟動安裝。
OPC PLC 模擬器
如果您為 OPC PLC 模擬器建立資產端點,但 OPC PLC 模擬器不會將資料傳送至 MQTT 代理程式,請執行下列命令,以便為資產端點設定 autoAcceptUntrustedServerCertificates=true
:
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}}"}}'
警告
請勿在生產環境或生產階段前環境中使用此設定。 在未經適當驗證的情況下將叢集公開至網際網路上可能會導致未經授權的存取,甚至 DDOS 攻擊。
您可以使用下列命令修補所有資產端點:
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
如果您在建立新的資產之後,OPC PLC 模擬器未將資料傳送至 MQTT 代理程式,請重新啟動 OPC PLC 模擬器 Pod。 Pod 名稱看起來像 aio-opc-opc.tcp-1-f95d76c54-w9v9c
。 若要重新啟動 Pod,請使用 k9s
工具來終止 Pod,或執行下列命令:
kubectl delete pod aio-opc-opc.tcp-1-f95d76c54-w9v9c -n azure-iot-operations
資料流程
在作業體驗UI中看不到在叢集中建立的數據流自定義資源。 這是預期,因為 目前不支援使用 Kubernetes 管理 Azure IoT Operations 元件,且目前不支援將資源從邊緣同步處理至雲端。
尚不支援自定義 Kafka 端點的 X.509 驗證。
目前尚不支援使用架構還原串行化和驗證訊息。 在來源組態中指定架構只允許作業體驗入口網站顯示數據點清單,但不會根據架構驗證數據點。
在作業體驗入口網站中建立 X.509 秘密會導致密碼編碼不正確。 若要解決此問題,請透過 Azure 金鑰保存庫 建立多行密碼,然後從作業體驗入口網站中的秘密清單中選取它。
將多個IoT作業實例連線到相同的事件方格 MQTT 命名空間時,可能會因為用戶端識別符衝突而發生連線失敗。 用戶端識別碼目前衍生自數據流資源名稱,且使用基礎結構即程式代碼 (IaC) 模式進行部署時,產生的用戶端標識碼可能完全相同。 暫時的因應措施是,將隨機性新增至部署範本中的數據流名稱。