使用 az networkcloud baremetalmachine run-read-command
針對 BMM 問題進行疑難解答
在某些情況下,使用者可能需要調查並解決內部部署裸機 (BMM) 的問題。 運算子連接點提供 az networkcloud baremetalmachine run-read-command
,讓使用者可以執行只讀命令的策劃清單,以從 BMM 取得資訊。
此命令會產生包含執行讀取命令執行結果的輸出檔案。 根據預設,數據會傳送至叢集管理員記憶體帳戶。 另外還有預覽方法,使用者可以使用記憶體帳戶和身分識別來設定叢集資源,而該記憶體帳戶可以存取記憶體帳戶以接收輸出。
必要條件
- 安裝最新版本的適當 CLI 延伸模組
- 確定目標 BMM 必須將其
poweredState
設定為On
,並將其readyState
設定為True
- 取得您為
Cluster
資源建立的受控資源群組名稱 (cluster_MRG)
確認叢集管理員記憶體帳戶的存取權
注意
叢集管理員記憶體帳戶輸出方法將會在未來淘汰,一旦叢集上線至信任的服務完成,且完全支援使用者管理的記憶體選項。
如果使用叢集管理員記憶體方法,請確認您具有叢集管理員記憶體帳戶的存取權:
- 從 Azure 入口網站,瀏覽至叢集管理員的儲存體帳戶。
- 在 [儲存體帳戶詳細資料] 中,從左側導覽功能表中選取 [儲存體瀏覽器]。
- 在儲存體瀏覽器詳細資料中,選取 [Blob 容器]。
- 如果您在存取儲存體帳戶時遇到
403 This request is not authorized to perform this operation.
,則必須更新儲存體帳戶的防火牆設定,以包含公用 IP 位址。 - 透過叢集管理員資源上的入口網站,建立支援票證來要求存取權。 提供需要存取權的公用 IP 位址。
預覽: 將命令輸出傳送至使用者指定的記憶體帳戶
重要
請注意,為命令輸出指定使用者記憶體帳戶的這個方法處於預覽狀態。 這個方法應該只與未啟用防火牆的用戶帳戶搭配使用。 如果您的環境需要啟用記憶體帳戶防火牆,請使用現有的叢集管理員輸出方法。
建立和設定記憶體資源
- 建立記憶體帳戶,或識別您想要使用的現有記憶體帳戶。 請參閱 建立 Azure 記憶體帳戶。
- 在記憶體帳戶中建立 Blob 記憶體容器。 請參閱 建立容器。
- 將「記憶體 Blob 數據參與者」角色指派給需要存取 run-data-extract 輸出的使用者和受控識別。
- 請參閱指派 Azure 角色以存取 blob 資料。 角色也必須指派給使用者指派的受控識別或叢集本身系統指派的受控識別。
- 如需受控識別的相關詳細資訊,請參閱適用於 Azure 資源的受控識別。
- 如果使用叢集的系統指派身分識別,系統指派的身分識別必須先新增至叢集,才能獲得存取權。
- 將角色指派給叢集的系統指派身分識別時,請確定您選取類型為「叢集」的資源(操作員 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
是特殊的容器映像,其中包含更多未安裝在裸機主機上的工具,例如 ipmitool
和 racadm
。
某些 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
。
開啟伺服器所在叢集的 [叢集管理員受控資源群組],然後選取 [儲存器帳戶]。
在 [儲存體帳戶詳細資料] 中,從左側導覽功能表中選取 [儲存體瀏覽器]。
在儲存體瀏覽器詳細資料中,選取 [Blob 容器]。
選取 baremetal-run-command-output Blob 容器。
儲存體帳戶可能會遭到鎖定,因為網路或防火牆限制而造成
403 This request is not authorized to perform this operation.
。 如需驗證存取的程式, 請參閱叢集管理員記憶體 或 客戶管理的記憶體 區段。從 run-read 命令中選取輸出檔案。 您可以從
az rest --method get
命令識別檔案名稱。 此外,執行命令時,上次修改時間戳會一致。您可以從快顯概觀下載輸出檔案。
預覽:檢查命令狀態,並在使用者指定的記憶體帳戶中檢視輸出
即會顯示範例輸出。 為方便起見,這會將結果的前 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