共用方式為


使用 az networkcloud baremetalmachine run-read-command 針對 BMM 問題進行疑難解答

在某些情況下,使用者可能需要調查並解決內部部署裸機 (BMM) 的問題。 運算子連接點提供 az networkcloud baremetalmachine run-read-command,讓使用者可以執行只讀命令的策劃清單,以從 BMM 取得資訊。

此命令會產生包含執行讀取命令執行結果的輸出檔案。 根據預設,數據會傳送至叢集管理員記憶體帳戶。 另外還有預覽方法,使用者可以使用記憶體帳戶和身分識別來設定叢集資源,而該記憶體帳戶可以存取記憶體帳戶以接收輸出。

必要條件

  1. 安裝最新版本的適當 CLI 延伸模組
  2. 確定目標 BMM 必須將其 poweredState 設定為 On,並將其 readyState 設定為 True
  3. 取得您為 Cluster 資源建立的受控資源群組名稱 (cluster_MRG)

確認叢集管理員記憶體帳戶的存取權

注意

叢集管理員記憶體帳戶輸出方法將會在未來淘汰,一旦叢集上線至信任的服務完成,且完全支援使用者管理的記憶體選項。

如果使用叢集管理員記憶體方法,請確認您具有叢集管理員記憶體帳戶的存取權:

  1. 從 Azure 入口網站,瀏覽至叢集管理員的儲存體帳戶。
  2. 在 [儲存體帳戶詳細資料] 中,從左側導覽功能表中選取 [儲存體瀏覽器]
  3. 在儲存體瀏覽器詳細資料中,選取 [Blob 容器]
  4. 如果您在存取儲存體帳戶時遇到 403 This request is not authorized to perform this operation.,則必須更新儲存體帳戶的防火牆設定,以包含公用 IP 位址。
  5. 透過叢集管理員資源上的入口網站,建立支援票證來要求存取權。 提供需要存取權的公用 IP 位址。

預覽: 將命令輸出傳送至使用者指定的記憶體帳戶

重要

請注意,為命令輸出指定使用者記憶體帳戶的這個方法處於預覽狀態。 這個方法應該只與未啟用防火牆的用戶帳戶搭配使用。 如果您的環境需要啟用記憶體帳戶防火牆,請使用現有的叢集管理員輸出方法。

建立和設定記憶體資源

  1. 建立記憶體帳戶,或識別您想要使用的現有記憶體帳戶。 請參閱 建立 Azure 記憶體帳戶
  2. 在記憶體帳戶中建立 Blob 記憶體容器。 請參閱 建立容器
  3. 將「記憶體 Blob 數據參與者」角色指派給需要存取 run-data-extract 輸出的使用者和受控識別。
    1. 請參閱指派 Azure 角色以存取 blob 資料。 角色也必須指派給使用者指派的受控識別或叢集本身系統指派的受控識別。
    2. 如需受控識別的相關詳細資訊,請參閱適用於 Azure 資源的受控識別
    3. 如果使用叢集的系統指派身分識別,系統指派的身分識別必須先新增至叢集,才能獲得存取權。
    4. 將角色指派給叢集的系統指派身分識別時,請確定您選取類型為「叢集」的資源(操作員 Nexus)。

設定叢集以使用使用者指派的受控識別進行記憶體存取

使用此命令建立具有使用者受控記憶體帳戶和使用者指派身分識別的叢集。 請注意,此範例是縮寫的命令,只會反白顯示與新增使用者受控記憶體相關的欄位。 這不是完整的叢集建立命令。

az networkcloud cluster create --name "<cluster-name>" \
  --resource-group "<cluster-resource-group>" \
  ...
  --mi-user-assigned "<user-assigned-identity-resource-id>" \
  --command-output-settings identity-type="UserAssignedIdentity" \
  identity-resource-id="<user-assigned-identity-resource-id>" \
  container-url="<container-url>" \
  ...
  --subscription "<subscription>"

使用此命令為使用者提供的記憶體帳戶和使用者指派的身分識別設定現有的叢集。 更新命令也可用來視需要變更記憶體帳戶位置和身分識別。

az networkcloud cluster update --name "<cluster-name>" \
  --resource-group "<cluster-resource-group>" \
  --mi-user-assigned "<user-assigned-identity-resource-id>" \
  --command-output-settings identity-type="UserAssignedIdentity" \
  identity-resource-id="<user-assigned-identity-resource-id>" \
  container-url="<container-url>" \
  --subscription "<subscription>"

設定叢集以使用系統指派的受控識別進行記憶體存取

使用此命令建立具有使用者受控記憶體帳戶和系統指派身分識別的叢集。 請注意,此範例是縮寫的命令,只會反白顯示與新增使用者受控記憶體相關的欄位。 這不是完整的叢集建立命令。

az networkcloud cluster create --name "<cluster-name>" \
  --resource-group "<cluster-resource-group>" \
  ...
  --mi-system-assigned true \
  --command-output-settings identity-type="SystemAssignedIdentity" \
  container-url="<container-url>" \
  ...
  --subscription "<subscription>"

使用此命令為使用者提供的記憶體帳戶設定現有的叢集,並使用自己的系統指派身分識別。 update 命令也可用來變更記憶體帳戶位置。

az networkcloud cluster update --name "<cluster-name>" \
  --resource-group "<cluster-resource-group>" \
  --mi-system-assigned true \
  --command-output-settings identity-type="SystemAssignedIdentity" \
  container-url="<container-url>" \
  --subscription "<subscription>"

若要將叢集從使用者指派的身分識別變更為系統指派的身分識別,必須先使用下一節中的 命令清除 CommandOutputSettings,然後使用此命令進行設定。

清除叢集的 CommandOutputSettings

您可以清除 CommandOutputSettings,將 run-data-extract 輸出導向至叢集管理員的記憶體。 不過,不建議使用此選項,因為它較不安全,且選項將在未來的版本中移除。

不過,從使用者指派的身分識別切換到系統指派的身分識別時,必須清除 CommandOutputSettings。

使用此命令清除 CommandOutputSettings:

az rest --method patch \
  --url  "https://management.azure.com/subscriptions/<subscription>/resourceGroups/<cluster-resource-group>/providers/Microsoft.NetworkCloud/clusters/<cluster-name>?api-version=2024-08-01-preview" \
  --body '{"properties": {"commandOutputSettings":null}}'

檢視受控識別的主體標識碼

您可以在身分識別資源上選取 [JSON 檢視] 來找到識別資源標識符;標識元位於出現的面板頂端。 您可以在容器資源的 [設定 -> 屬性] 索引標籤上找到容器 URL。

CLI 也可以用來檢視叢集中的身分識別和相關聯的主體標識符數據。

範例:

az networkcloud cluster show --ids /subscriptions/<Subscription ID>/resourceGroups/<Cluster Resource Group Name>/providers/Microsoft.NetworkCloud/clusters/<Cluster Name>

系統指派的身分識別範例:

    "identity": {
        "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
        "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
        "type": "SystemAssigned"
    },

使用者指派的身分識別範例:

    "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
            "/subscriptions/<subscriptionID>/resourcegroups/<resourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<userAssignedIdentityName>": {
                "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
                "principalId": "bbbbbbbb-cccc-dddd-2222-333333333333"
            }
        }
    },

執行執行讀取命令

run-read 命令可讓您在 BMM 上執行不會造成任何變更的命令。 某些命令有多個單字,或需要引數才能運作。 這些命令會像這樣,是為了將其與可能造成變更的命令區隔開來。 例如,run-read-command 可以使用 kubectl get,但不能使用 kubectl apply。 當您使用這些命令時,您必須將所有字放在 「command」 欄位中。 例如,{"command":"kubectl get","arguments":["nodes"]} 是對的;{"command":"kubectl","arguments":["get","nodes"]} 是錯的。

另請注意,某些命令的開頭是 nc-toolbox nc-toolbox-runread,必須如下所示輸入這些命令。 nc-toolbox-runread 是特殊的容器映像,其中包含更多未安裝在裸機主機上的工具,例如 ipmitoolracadm

某些 run-read 命令需要提供特定的引數,以強制執行命令的唯讀功能。 需要特定引數的 run-read 命令範例是允許的 Mellanox 命令 mstconfig,因此需要提供 query 引數以強制執行唯讀。

警告

Microsoft 不提供或支援任何運算子連接點 API 呼叫,其預期會提供純文字使用者名稱和/或密碼。 請注意,傳送的任何值都會記錄下來,並視為公開的祕密,應加以輪換和撤銷。 Microsoft 記錄的祕密的安全使用方法是,將祕密儲存在 Azure Key Vault 中,如果您有特定問題或疑慮,請透過 Azure 入口網站提交要求。

此清單會顯示您可以使用的命令。 中的 *italics* 命令不能有 arguments;其餘命令可以。

  • arp
  • brctl show
  • dmidecode
  • fdisk -l
  • host
  • hostname
  • ifconfig -a
  • ifconfig -s
  • ip address show
  • ip link show
  • ip maddress show
  • ip route show
  • journalctl
  • kubectl api-resources
  • kubectl api-versions
  • kubectl describe
  • kubectl get
  • kubectl logs
  • mount
  • ping
  • ss
  • tcpdump
  • traceroute
  • uname
  • ulimit -a
  • uptime
  • nc-toolbox nc-toolbox-runread ipmitool channel authcap
  • nc-toolbox nc-toolbox-runread ipmitool channel info
  • nc-toolbox nc-toolbox-runread ipmitool chassis status
  • nc-toolbox nc-toolbox-runread ipmitool chassis power status
  • nc-toolbox nc-toolbox-runread ipmitool chassis restart cause
  • nc-toolbox nc-toolbox-runread ipmitool chassis poh
  • nc-toolbox nc-toolbox-runread ipmitool dcmi power get_limit
  • nc-toolbox nc-toolbox-runread ipmitool dcmi sensors
  • nc-toolbox nc-toolbox-runread ipmitool dcmi asset_tag
  • nc-toolbox nc-toolbox-runread ipmitool dcmi get_mc_id_string
  • nc-toolbox nc-toolbox-runread ipmitool dcmi thermalpolicy get
  • nc-toolbox nc-toolbox-runread ipmitool dcmi get_temp_reading
  • nc-toolbox nc-toolbox-runread ipmitool dcmi get_conf_param
  • nc-toolbox nc-toolbox-runread ipmitool delloem lcd info
  • nc-toolbox nc-toolbox-runread ipmitool delloem lcd status
  • nc-toolbox nc-toolbox-runread ipmitool delloem mac list
  • nc-toolbox nc-toolbox-runread ipmitool delloem mac get
  • nc-toolbox nc-toolbox-runread ipmitool delloem lan get
  • nc-toolbox nc-toolbox-runread ipmitool delloem powermonitor powerconsumption
  • nc-toolbox nc-toolbox-runread ipmitool delloem powermonitor powerconsumptionhistory
  • nc-toolbox nc-toolbox-runread ipmitool delloem powermonitor getpowerbudget
  • nc-toolbox nc-toolbox-runread ipmitool delloem vflash info card
  • nc-toolbox nc-toolbox-runread ipmitool echo
  • nc-toolbox nc-toolbox-runread ipmitool ekanalyzer print
  • nc-toolbox nc-toolbox-runread ipmitool ekanalyzer summary
  • nc-toolbox nc-toolbox-runread ipmitool fru print
  • nc-toolbox nc-toolbox-runread ipmitool fwum info
  • nc-toolbox nc-toolbox-runread ipmitool fwum status
  • nc-toolbox nc-toolbox-runread ipmitool fwum tracelog
  • nc-toolbox nc-toolbox-runread ipmitool gendev list
  • nc-toolbox nc-toolbox-runread ipmitool hpm rollbackstatus
  • nc-toolbox nc-toolbox-runread ipmitool hpm selftestresult
  • nc-toolbox nc-toolbox-runread ipmitool ime help
  • nc-toolbox nc-toolbox-runread ipmitool ime info
  • nc-toolbox nc-toolbox-runread ipmitool isol info
  • nc-toolbox nc-toolbox-runread ipmitool lan print
  • nc-toolbox nc-toolbox-runread ipmitool lan alert print
  • nc-toolbox nc-toolbox-runread ipmitool lan stats get
  • nc-toolbox nc-toolbox-runread ipmitool mc bootparam get
  • nc-toolbox nc-toolbox-runread ipmitool mc chassis poh
  • nc-toolbox nc-toolbox-runread ipmitool mc chassis policy list
  • nc-toolbox nc-toolbox-runread ipmitool mc chassis power status
  • nc-toolbox nc-toolbox-runread ipmitool mc chassis status
  • nc-toolbox nc-toolbox-runread ipmitool mc getenables
  • nc-toolbox nc-toolbox-runread ipmitool mc getsysinfo
  • nc-toolbox nc-toolbox-runread ipmitool mc guid
  • nc-toolbox nc-toolbox-runread ipmitool mc info
  • nc-toolbox nc-toolbox-runread ipmitool mc restart cause
  • nc-toolbox nc-toolbox-runread ipmitool mc watchdog get
  • nc-toolbox nc-toolbox-runread ipmitool bmc bootparam get
  • nc-toolbox nc-toolbox-runread ipmitool bmc chassis poh
  • nc-toolbox nc-toolbox-runread ipmitool bmc chassis policy list
  • nc-toolbox nc-toolbox-runread ipmitool bmc chassis power status
  • nc-toolbox nc-toolbox-runread ipmitool bmc chassis status
  • nc-toolbox nc-toolbox-runread ipmitool bmc getenables
  • nc-toolbox nc-toolbox-runread ipmitool bmc getsysinfo
  • nc-toolbox nc-toolbox-runread ipmitool bmc guid
  • nc-toolbox nc-toolbox-runread ipmitool bmc info
  • nc-toolbox nc-toolbox-runread ipmitool bmc restart cause
  • nc-toolbox nc-toolbox-runread ipmitool bmc watchdog get
  • nc-toolbox nc-toolbox-runread ipmitool nm alert get
  • nc-toolbox nc-toolbox-runread ipmitool nm capability
  • nc-toolbox nc-toolbox-runread ipmitool nm discover
  • nc-toolbox nc-toolbox-runread ipmitool nm policy get policy_id
  • nc-toolbox nc-toolbox-runread ipmitool nm policy limiting
  • nc-toolbox nc-toolbox-runread ipmitool nm statistics
  • nc-toolbox nc-toolbox-runread ipmitool nm suspend get
  • nc-toolbox nc-toolbox-runread ipmitool nm threshold get
  • nc-toolbox nc-toolbox-runread ipmitool pef
  • nc-toolbox nc-toolbox-runread ipmitool picmg addrinfo
  • nc-toolbox nc-toolbox-runread ipmitool picmg policy get
  • nc-toolbox nc-toolbox-runread ipmitool power status
  • nc-toolbox nc-toolbox-runread ipmitool sdr elist
  • nc-toolbox nc-toolbox-runread ipmitool sdr get
  • nc-toolbox nc-toolbox-runread ipmitool sdr info
  • nc-toolbox nc-toolbox-runread ipmitool sdr list
  • nc-toolbox nc-toolbox-runread ipmitool sdr type
  • nc-toolbox nc-toolbox-runread ipmitool sel elist
  • nc-toolbox nc-toolbox-runread ipmitool sel get
  • nc-toolbox nc-toolbox-runread ipmitool sel info
  • nc-toolbox nc-toolbox-runread ipmitool sel list
  • nc-toolbox nc-toolbox-runread ipmitool sel time get
  • nc-toolbox nc-toolbox-runread ipmitool sensor get
  • nc-toolbox nc-toolbox-runread ipmitool sensor list
  • nc-toolbox nc-toolbox-runread ipmitool session info
  • nc-toolbox nc-toolbox-runread ipmitool sol info
  • nc-toolbox nc-toolbox-runread ipmitool sol payload status
  • nc-toolbox nc-toolbox-runread ipmitool user list
  • nc-toolbox nc-toolbox-runread ipmitool user summary
  • nc-toolbox nc-toolbox-runread racadm arp
  • nc-toolbox nc-toolbox-runread racadm coredump
  • nc-toolbox nc-toolbox-runread racadm diagnostics
  • nc-toolbox nc-toolbox-runread racadm eventfilters get
  • nc-toolbox nc-toolbox-runread racadm fcstatistics
  • nc-toolbox nc-toolbox-runread racadm get
  • nc-toolbox nc-toolbox-runread racadm getconfig
  • nc-toolbox nc-toolbox-runread racadm gethostnetworkinterfaces
  • nc-toolbox nc-toolbox-runread racadm getled
  • nc-toolbox nc-toolbox-runread racadm getniccfg
  • nc-toolbox nc-toolbox-runread racadm getraclog
  • nc-toolbox nc-toolbox-runread racadm getractime
  • nc-toolbox nc-toolbox-runread racadm getsel
  • nc-toolbox nc-toolbox-runread racadm getsensorinfo
  • nc-toolbox nc-toolbox-runread racadm getssninfo
  • nc-toolbox nc-toolbox-runread racadm getsvctag
  • nc-toolbox nc-toolbox-runread racadm getsysinfo
  • nc-toolbox nc-toolbox-runread racadm gettracelog
  • nc-toolbox nc-toolbox-runread racadm getversion
  • nc-toolbox nc-toolbox-runread racadm hwinventory
  • nc-toolbox nc-toolbox-runread racadm ifconfig
  • nc-toolbox nc-toolbox-runread racadm inlettemphistory get
  • nc-toolbox nc-toolbox-runread racadm jobqueue view
  • nc-toolbox nc-toolbox-runread racadm lclog view
  • nc-toolbox nc-toolbox-runread racadm lclog viewconfigresult
  • nc-toolbox nc-toolbox-runread racadm license view
  • nc-toolbox nc-toolbox-runread racadm netstat
  • nc-toolbox nc-toolbox-runread racadm nicstatistics
  • nc-toolbox nc-toolbox-runread racadm ping
  • nc-toolbox nc-toolbox-runread racadm ping6
  • nc-toolbox nc-toolbox-runread racadm racdump
  • nc-toolbox nc-toolbox-runread racadm sslcertview
  • nc-toolbox nc-toolbox-runread racadm swinventory
  • nc-toolbox nc-toolbox-runread racadm systemconfig getbackupscheduler
  • nc-toolbox nc-toolbox-runread racadm systemperfstatistics (不允許 PeakReset 引數)
  • nc-toolbox nc-toolbox-runread racadm techsupreport getupdatetime
  • nc-toolbox nc-toolbox-runread racadm traceroute
  • nc-toolbox nc-toolbox-runread racadm traceroute6
  • nc-toolbox nc-toolbox-runread racadm usercertview
  • nc-toolbox nc-toolbox-runread racadm vflashsd status
  • nc-toolbox nc-toolbox-runread racadm vflashpartition list
  • nc-toolbox nc-toolbox-runread racadm vflashpartition status -a
  • nc-toolbox nc-toolbox-runread mstregdump
  • nc-toolbox nc-toolbox-runread mstconfig (需要 query 自變數)
  • nc-toolbox nc-toolbox-runread mstflint (需要 query 自變數)
  • nc-toolbox nc-toolbox-runread mstlink (需要 query 自變數)
  • nc-toolbox nc-toolbox-runread mstfwmanager (需要 query 自變數)
  • nc-toolbox nc-toolbox-runread mlx_temp

命令語法為:

az networkcloud baremetalmachine run-read-command --name "<machine-name>"
    --limit-time-seconds "<timeout>" \
    --commands '[{"command":"<command1>"},{"command":"<command2>","arguments":["<arg1>","<arg2>"]}]' \
    --resource-group "<cluster_MRG>" \
    --subscription "<subscription>"

您可以使用 json 格式提供多個命令,以 --commands 選項。

針對具有多個自變數的命令,提供做為清單來 arguments 參數。 如需建構 --commands 結構的指示,請參閱 Azure CLI 縮寫

這些命令可以長時間執行,因此建議將 --limit-time-seconds 設定為至少 600 秒 (10 分鐘)。 執行多個命令可能需要超過10分鐘的時間。

此命令會同步執行。 如果您想要略過等候命令完成,請指定 --no-wait --debug 選項。 如需詳細資訊,請參閱如何追蹤非同步作業

提供選擇性引述 --output-directory 時,輸出結果會下載並解壓縮至本機目錄。

警告

使用 自 --output-directory 變數會覆寫本機目錄中與所建立新檔案同名的任何檔案。

此範例會執行 'kubectl get pods'

az networkcloud baremetalmachine run-read-command --name "<bareMetalMachineName>" \
   --limit-time-seconds 60 \
   --commands "[{command:'kubectl get',arguments:[pods,-n,nc-system]}]" \
   --resource-group "<cluster_MRG>" \
   --subscription "<subscription>"

此範例會執行 hostname 命令和 ping 命令

az networkcloud baremetalmachine run-read-command --name "<bareMetalMachineName>" \
    --limit-time-seconds 60 \
    --commands '[{"command":"hostname"},{"command":"ping","arguments":["198.51.102.1","-c","3"]}]' \
    --resource-group "<cluster_MRG>" \
    --subscription "<subscription>"

此範例會執行 racadm getsysinfo -c 命令

az networkcloud baremetalmachine run-read-command --name "<bareMetalMachineName>" \
    --limit-time-seconds 60 \
    --commands '[{"command":"nc-toolbox nc-toolbox-runread racadm getsysinfo","arguments":["-c"]}]' \
    --resource-group "<cluster_MRG>" \
    --subscription "<subscription>"

如何在叢集管理員儲存體帳戶中檢視 az networkcloud baremetalmachine run-read-command 的輸出

本指南會逐步引導您存取在伺服器上執行 az networkcloud baremetalmachine run-read-command 時,於叢集管理員儲存體帳戶中建立的輸出檔案。 在狀態輸出中,會識別檔案的名稱 az rest

  1. 開啟伺服器所在叢集的 [叢集管理員受控資源群組],然後選取 [儲存器帳戶]

  2. 在 [儲存體帳戶詳細資料] 中,從左側導覽功能表中選取 [儲存體瀏覽器]

  3. 在儲存體瀏覽器詳細資料中,選取 [Blob 容器]

  4. 選取 baremetal-run-command-output Blob 容器。

  5. 儲存體帳戶可能會遭到鎖定,因為網路或防火牆限制而造成 403 This request is not authorized to perform this operation.。 如需驗證存取的程式, 請參閱叢集管理員記憶體客戶管理的記憶體 區段。

  6. 從 run-read 命令中選取輸出檔案。 您可以從 az rest --method get 命令識別檔案名稱。 此外,執行命令時,上次修改時間戳會一致。

  7. 您可以從快顯概觀下載輸出檔案。

預覽:檢查命令狀態,並在使用者指定的記憶體帳戶中檢視輸出

即會顯示範例輸出。 為方便起見,這會將結果的前 4,000 個字元列印到畫面,並提供包含命令執行結果的儲存體 Blob 短期連結。 您可以使用連結來下載壓縮的輸出檔案 (tar.gz)。

  ====Action Command Output====
  + hostname
  rack1compute01
  + ping 198.51.102.1 -c 3
  PING 198.51.102.1 (198.51.102.1) 56(84) bytes of data.

  --- 198.51.102.1 ping statistics ---
  3 packets transmitted, 0 received, 100% packet loss, time 2049ms

  ================================
  Script execution result can be found in storage account:
  https://<storage_account_name>.blob.core.windows.net/bmm-run-command-output/a8e0a5fe-3279-46a8-b995-51f2f98a18dd-action-bmmrunreadcmd.tar.gz?se=2023-04-14T06%3A37%3A00Z&sig=XXX&sp=r&spr=https&sr=b&st=2023-04-14T02%3A37%3A00Z&sv=2019-12-12