你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍如何使用 Azure 命令行接口 (AzCLI) 创建群集。 本文档还演示如何检查状态、更新或删除群集。
先决条件
- 验证 Azure 区域中是否存在网络结构控制器和群集管理器
- 验证是否已成功预配网络结构
API 指南和指标
API 指南提供有关资源提供程序、资源模型和 API 的信息。
从日志记录数据生成的指标在 Azure Monitor 指标中可用。
限制
- 命名 - 可在此处找到命名规则。
创建群集
基础结构群集资源表示群集管理器中平台的本地部署。 其他所有特定于平台的资源在其生命周期内都依赖于它。
应在此本地部署之前创建网络结构。 每个运营商关系本地实例都与网络结构一对一关联。
重要
创建群集后立即更新群集可能会导致群集部署失败。 在 cluster.spec.computeRackDefinitions.bareMetalMachineConfigurationData
部分中填充 bmcConnectionString 字段之前更新资源时,会出现此问题。 bmcConnectionStrings 通常在创建群集后的几分钟内设置。
若要避免此问题,请确保在通过 Azure 门户或 az networkcloud update
命令更新群集资源之前,bmcConnectionStrings 包含非空值。
若要确认状态,请在 Azure 门户中打开群集(作员 Nexus)资源的 JSON 属性,或运行 az networkcloud cluster show
CLI 命令,如以下示例所示。 如果 bmmConnectionString 值显示非空 redfish+https..
值,则可以安全地更新群集。 此问题将在将来的版本中修复。
示例 az networkcloud cluster show -n cluster01 -g cluster01resourceGroup--query 'computeRackDefinitions[].bareMetalMachineConfigurationData[].bmcConnectionString' -o json
bmcConnectionString 输出如下所示:
["redfish+https://10.9.3.20/redfish/v1/Systems/System.Embedded.1",
"redfish+https://10.9.3.19/redfish/v1/Systems/System.Embedded.1",
"redfish+https://10.9.3.18/redfish/v1/Systems/System.Embedded.1",
"redfish+https://10.9.3.17/redfish/v1/Systems/System.Embedded.1"]
使用 Azure CLI 创建群集 - 单个存储设备:
重要
此命令为包含单个存储设备的 Nexus 实例创建群集。 如果针对具有两个存储设备的实例运行它,则第二个设备不会配置。 如果你的 Nexus 实例包含两个存储设备,请遵循适用于多个存储设备的说明。
az networkcloud cluster create --name "<CLUSTER_NAME>" --___location "<LOCATION>" \
--extended-___location name="<CL_NAME>" type="CustomLocation" \
--resource-group "<CLUSTER_RG>" \
--analytics-workspace-id "<LAW_ID>" \
--cluster-___location "<CLUSTER_LOCATION>" \
--network-rack-id "<AGGR_RACK_RESOURCE_ID>" \
--rack-sku-id "<AGGR_RACK_SKU>"\
--rack-serial-number "<AGGR_RACK_SN>" \
--rack-___location "<AGGR_RACK_LOCATION>" \
--bare-metal-machine-configuration-data "["<AGGR_RACK_BMM>"]" \
--storage-appliance-configuration-data '[{"adminCredentials":{"password":"<SA1_PASS>","username":"<SA_USER>"},"rackSlot":1,"serialNumber":"<SA1_SN>","storageApplianceName":"<SA1_NAME>"}]' \
--compute-rack-definitions '[{"networkRackId": "<COMPX_RACK_RESOURCE_ID>", "rackSkuId": "<COMPX_RACK_SKU>", "rackSerialNumber": "<COMPX_RACK_SN>", "rackLocation": "<COMPX_RACK_LOCATION>", "storageApplianceConfigurationData": [], "bareMetalMachineConfigurationData":[{"bmcCredentials": {"password":"<COMPX_SVRY_BMC_PASS>", "username":"<COMPX_SVRY_BMC_USER>"}, "bmcMacAddress":"<COMPX_SVRY_BMC_MAC>", "bootMacAddress":"<COMPX_SVRY_BOOT_MAC>", "machineDetails":"<COMPX_SVRY_SERVER_DETAILS>", "machineName":"<COMPX_SVRY_SERVER_NAME>"}]}]'\
--managed-resource-group-configuration name="<MRG_NAME>" ___location="<MRG_LOCATION>" \
--network fabric-id "<NF_ID>" \
--cluster-service-principal application-id="<SP_APP_ID>" \
password="$SP_PASS" principal-id="$SP_ID" tenant-id="<TENANT_ID>" \
--subscription "<SUBSCRIPTION_ID>" \
--secret-archive-settings "{identity-type:<ID_TYPE>, vault-uri:<VAULT_URI>}" \
--cluster-type "<CLUSTER_TYPE>" --cluster-version "<CLUSTER_VERSION>" \
--tags <TAG_KEY1>="<TAG_VALUE1>" <TAG_KEY2>="<TAG_VALUE2>"
使用 Azure CLI 创建群集 - 多个存储设备:
“<AGGR_RACK_SKU>”必须设置为支持两个存储设备的值。 请参阅 运营商 Nexus 网络云 SKU 来选择适当的 SKU。 群集创建命令还会设置用于创建卷的默认存储设备。 默认设备是其配置数据中包含 "rackSlot":1
的设备。
az networkcloud cluster create --name "<CLUSTER_NAME>" --___location "<LOCATION>" \
--extended-___location name="<CL_NAME>" type="CustomLocation" \
--resource-group "<CLUSTER_RG>" \
--analytics-workspace-id "<LAW_ID>" \
--cluster-___location "<CLUSTER_LOCATION>" \
--network-rack-id "<AGGR_RACK_RESOURCE_ID>" \
--rack-sku-id "<AGGR_RACK_SKU>"\
--rack-serial-number "<AGGR_RACK_SN>" \
--rack-___location "<AGGR_RACK_LOCATION>" \
--bare-metal-machine-configuration-data "["<AGGR_RACK_BMM>"]" \
--storage-appliance-configuration-data '[{"adminCredentials":{"password":"<SA1_PASS>","username":"<SA_USER>"},"rackSlot":1,"serialNumber":"<SA1_SN>","storageApplianceName":"<SA1_NAME>"},{"adminCredentials":{"password":"<SA2_PASS>","username":"<SA_USER>"},"rackSlot":2,"serialNumber":"<SA2_SN>","storageApplianceName":"<SA2_NAME>"}]' \
--compute-rack-definitions '[{"networkRackId": "<COMPX_RACK_RESOURCE_ID>", "rackSkuId": "<COMPX_RACK_SKU>", "rackSerialNumber": "<COMPX_RACK_SN>", "rackLocation": "<COMPX_RACK_LOCATION>", "storageApplianceConfigurationData": [], "bareMetalMachineConfigurationData":[{"bmcCredentials": {"password":"<COMPX_SVRY_BMC_PASS>", "username":"<COMPX_SVRY_BMC_USER>"}, "bmcMacAddress":"<COMPX_SVRY_BMC_MAC>", "bootMacAddress":"<COMPX_SVRY_BOOT_MAC>", "machineDetails":"<COMPX_SVRY_SERVER_DETAILS>", "machineName":"<COMPX_SVRY_SERVER_NAME>"}]}]'\
--managed-resource-group-configuration name="<MRG_NAME>" ___location="<MRG_LOCATION>" \
--network fabric-id "<NF_ID>" \
--cluster-service-principal application-id="<SP_APP_ID>" \
password="$SP_PASS" principal-id="$SP_ID" tenant-id="<TENANT_ID>" \
--subscription "<SUBSCRIPTION_ID>" \
--secret-archive-settings "{identity-type:<ID_TYPE>, vault-uri:<VAULT_URI>}" \
--cluster-type "<CLUSTER_TYPE>" --cluster-version "<CLUSTER_VERSION>" \
--tags <TAG_KEY1>="<TAG_VALUE1>" <TAG_KEY2>="<TAG_VALUE2>"
群集操作的参数
参数名称 | 说明 |
---|---|
CLUSTER_NAME | 群集的资源名称 |
位置 | Azure 中部署群集的区域 |
CL_NAME | Azure 门户中的群集管理器自定义位置 |
CLUSTER_RG | 群集资源组名称 |
LAW_ID | 群集的 Log Analytics 工作区 ID |
集群位置 | 群集的本地名称 |
AGGR_RACK_RESOURCE_ID | 聚合器机架的 RackID |
AGGR_RACK_SKU | 聚合器机架的机架库存单位 (SKU) *请参阅 Operator Nexus 网络云 SKU |
AGGR_RACK_SN | 聚合器机架的机架序列号 |
AGGR_RACK_LOCATION | 聚合器机架的机架物理位置 |
AGGR_RACK_BMM | 仅用于单机架部署,多机架部署为空 |
SA1_NAME | 第一个存储设备设备名称 |
SA2_NAME | 第二个存储设备设备名称 |
SA1_PASS | 第一个存储设备管理员密码引用 URI 或密码值 *请参阅 Key Vault 凭据引用 |
SA2_PASS | 第二个存储设备管理员密码引用 URI 或密码值 *请参阅 Key Vault 凭据引用 |
SA_USER | 存储设备管理员用户 |
SA1_SN | 第一个存储设备序列号 |
SA2_SN | 第二个存储设备序列号 |
COMPX_RACK_RESOURCE_ID | CompX 机架的 RackID;在 compute-rack-definitions 中对每个机架重复 |
COMPX_RACK_SKU | CompX 机架的库存单位 (SKU);针对 compute-rack-definitions 中的每个机架重复 *请参阅 Operator Nexus 网络云库存单位 (SKU) |
COMPX_RACK_SN | CompX 机架的机架序列号;在 compute-rack-definitions 中对每个机架重复 |
COMPX_RACK_LOCATION | CompX 机架的机架物理位置;在 compute-rack-definitions 中对每个机架重复 |
COMPX_SVRY_BMC_PASS | CompX Rack ServerY 基板管理控制器 (BMC) 密码引用 URI 或密码值;对 compute-rack-definitions 中的每个机架和机架中的每个服务器重复 *请参阅 Key Vault 凭据引用 |
COMPX_SVRY_BMC_USER | CompX Rack ServerY BMC 用户,对 compute-rack-definitions 中的每个机架和机架中的每个服务器重复 |
COMPX_SVRY_BMC_MAC | CompX Rack ServerY BMC MAC 地址,对 compute-rack-definitions 中的每个机架和机架中的每个服务器重复 |
COMPX_SVRY_BOOT_MAC | CompX Rack ServerY boot 网络适配卡 (NIC) MAC 地址;对 compute-rack-definitions 中的每个机架和机架中的每个服务器重复 |
COMPX_SVRY_SERVER_DETAILS | CompX Rack ServerY 详细信息,对 compute-rack-definitions 中的每个机架和机架中的每个服务器重复 |
COMPX_SVRY_SERVER_NAME | CompX Rack ServerY 名称;对 compute-rack-definitions 中的每个机架和机架中的每个服务器重复 |
MRG_NAME | 群集托管资源组名称 |
MRG_LOCATION | Azure 集群区域 |
NF_ID | 对网络结构的引用 |
SP_APP_ID | 服务主体应用 ID |
SP_PASS | 服务主体密码 |
SP_ID | 服务主体 ID |
TENANT_ID | 订阅租户 ID |
SUBSCRIPTION_ID(订阅ID) | 订阅编号 |
KV_RESOURCE_ID | 密钥保管库 ID |
集群类型 | 群集类型:单一或多机架 |
CLUSTER_VERSION | 群集的网络云 (NC) 版本 |
TAG_KEY1 | 传递给“群集创建”的可选 tag1 |
TAG_VALUE1 | 传递给“群集创建”的可选 tag1 值 |
TAG_KEY2 | 传递给“群集创建”的可选 tag2 |
TAG_VALUE2 | 传递给“群集创建”的可选 tag2 值 |
ID_TYPE | 有关 secret-archive-settings 的详细信息,请参阅托管标识的群集支持 |
VAULT_URI | 有关 secret-archive-settings 的详细信息,请参阅托管标识的群集支持 |
群集标识
发布 2024-07-01
API 版本后,客户可以将托管标识分配给群集。 系统分配的托管标识和用户分配的托管标识均受支持。
添加后,此时只能通过 API 调用删除该标识。
有关操作员 Nexus 群集的托管身份的详细信息,请参阅 Azure 操作员 Nexus 群集对托管身份和用户提供的资源的支持。
使用 Azure 资源管理器模板编辑器创建群集
创建群集的另一种方法是使用 ARM 模板编辑器。
若要以这种方式创建群集,需要提供模板文件(cluster.jsonc)和参数文件(cluster.parameters.jsonc)。 可以使用以下两个文件查找 8 机架 2M16C SKU 群集的示例:
cluster.jsonc、cluster.parameters.jsonc
注意
若要获取正确的格式,请复制原始代码文件。 cluster.parameters.jsonc 文件中的值特定于客户,可能不是完整列表。 更新特定环境的值字段。
- 在 Web 浏览器中导航到 Azure 门户,然后登录。
- 在 Azure 门户搜索栏中搜索“部署自定义模板”,然后从可用服务中选择它。
- 在编辑器中单击“生成自己的模板”。
- 单击“加载文件”。 找到 cluster.jsonc 模板文件并上传它。
- 单击“ 保存”。
- 单击“编辑参数”。
- 单击“加载文件”。 找到 cluster.parameters.jsonc 参数文件并上传它。
- 单击“ 保存”。
- 选择正确的订阅。
- 搜索资源组,查看它是否已经存在。 如果不存在,创建新的资源组。
- 确保所有实例详细信息都正确。
- 单击“查看 + 创建”。
群集验证
成功创建运营商关系群集后,系统会在订阅中创建 Azure 资源。 成功后,cluster create
返回群集 ID、群集配置状态和部署状态。
查看群集的状态:
az networkcloud cluster show --cluster-name "<clusterName>" /
--resource-group "<resourceGroupName>" /
--subscription <subscriptionID>
当资源的 provisioningState
显示 "provisioningState": "Succeeded"
时,表示群集创建完成
群集登录
可在以下位置查看群集创建日志:
- Azure 门户资源/资源组活动日志。
- 在命令行上传递
--debug
标志的 Azure CLI。
设置计算部署阈值
使用 compute-deployment-threshold
参数设置硬件验证期间计算节点允许失败的阈值。
如果未 compute-deployment-threshold
设置,则默认值如下所示:
"strategyType": "Rack",
"thresholdType": "PercentSuccess",
"thresholdValue": 80,
"waitTimeMinutes": 1
compute-deployment-threshold
如果所需值不是默认的 80%,请运行以下cluster update
命令。
例如,客户请求类型为“PercentSuccess”且成功率为 97% 的情况:
az networkcloud cluster update --name "<clusterName>" /
--resource-group "<resourceGroup>" /
--compute-deployment-threshold type="PercentSuccess" grouping="PerCluster" value=97 /
--subscription <subscriptionID>
验证更新
az networkcloud cluster show --resource-group "<resourceGroup>" --name "<clusterName>" | grep -a3 computeDeploymentThreshold
"clusterType": "MultiRack",
"clusterVersion": "<CLUSTER_VERSION>",
"computeDeploymentThreshold": {
"grouping": "PerCluster",
"type": "PercentSuccess",
"value": 97
在此示例中,如果部署的计算节点少于 97% 通过硬件验证,群集部署将失败。 注:所有 Kubernetes 控制平面 (KCP) 和 Nexus 管理平面 (NMP) 必须通过硬件验证。 如果部署的 97 个% 或更多计算节点通过硬件验证,则群集部署会继续执行启动预配阶段。
注意
启动群集部署后,无法更改部署阈值。
部署集群
重要
最佳做法是,在创建群集后等待 20 分钟,然后再部署,以确保创建所有关联的资源。
创建群集后,可以触发部署群集操作。 “部署群集”操作会创建启动映像并部署群集。
“部署群集”会启动在群集管理器中发生的一系列事件。
- 对群集/机架属性的验证。
- 为临时启动群集生成可启动映像(验证基础结构)。
- 与目标启动计算机的智能平台管理接口(IPMI)交互。
- 执行硬件验证检查。
- 监视群集部署过程。
部署本地群集:
az networkcloud cluster deploy \
--name "$CLUSTER_NAME" \
--resource-group "$CLUSTER_RG" \
--subscription "$SUBSCRIPTION_ID" \
--no-wait --debug
提示
若要检查 az networkcloud cluster deploy
命令的状态,可以使用 --debug
标志执行它。
从调试输出中获取用于查询Azure-AsyncOperation
资源的Location
或operationStatuses
标头。
如需更详细的步骤,请参阅群集部署失败部分。
(可选)可以使用 --no-wait
标志异步运行该命令。
具有硬件验证的群集部署
在群集部署过程中,执行的步骤之一是硬件验证。 硬件验证过程会运行各种测试,并针对通过群集机架定义提供的计算机进行检查。 根据这些检查的结果和任何用户跳过的计算机,确定是否有足够的节点通过和/或可用于满足继续部署所需的阈值。
重要
硬件验证过程会将结果写入群集创建时指定的 analyticsWorkspaceId
。
此外,群集对象中提供的服务主体用于对 Log Analytics 工作区数据收集 API 进行身份验证。
此功能仅在新部署期间可见(绿色字段),无法以追溯方式获取日志。
注意
在群集部署期间会重置 RAID 控制器,以擦除服务器虚拟磁盘中的所有数据。 除非存在其他物理磁盘和/或 RAID 控制器警报,否则可以忽略任何基板管理控制器(BMC)虚拟磁盘警报。
默认情况下,硬件验证过程会将结果写入配置的群集 analyticsWorkspaceId
。
但是,由于 Log Analytics 工作区数据收集和架构评估的性质,引入延迟可能达到几分钟或更久。
因此,即使未能将结果写入 Log Analytics 工作区,群集部署也会继续。
为了帮助解决这个可能的事件,结果也会在群集管理器中记录,以实现冗余。
在提供的群集对象的 Log Analytics 工作区中,会显示一个新的自定义表,它使用群集的名称作为前缀,后缀 *_CL
应会显示。
在 LAW 资源的“日志”部分中,可以针对新的 自定义日志表执行查询。*_CL
跳过特定裸机的群集部署
--skip-validation-for-machines
参数表示群集中在硬件验证期间应跳过的裸机计算机的名称。
跳过的节点不会被验证,也不会添加到节点池。
此外,跳过的节点不会计入阈值计算使用的总数。
az networkcloud cluster deploy \
--name "$CLUSTER_NAME" \
--resource-group "$CLUSTER_RG" \
--subscription "$SUBSCRIPTION_ID" \
--skip-validations-for-machines "$COMPX_SVRY_SERVER_NAME"
群集部署失败
重要
如果群集处于 Failed
状态,则必须将其删除并重新创建,然后才能再次部署。 如果未满足硬件验证阈值,或者部署的任何阶段在群集处于状态之前无法完成,则可能会发生群集 Running
故障。
若要跟踪异步操作的状态,请在运行时启用 --debug
标志。
指定 --debug
后,可以监视请求的进度。
可以通过检查调试输出,查找对创建请求的 HTTP 响应上的 Azure-AsyncOperation
或 Location
标头来找到操作状态 URL。
这些标头可以提供 HTTP API 调用中使用的 OPERATION_ID
字段。
OPERATION_ID="aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e*99399E995..."
az rest -m GET -u "https://management.azure.com/subscriptions/${SUBSCRIPTION_ID}/providers/Microsoft.NetworkCloud/locations/${LOCATION}/operationStatuses/${OPERATION_ID}?api-version=2022-12-12-preview"
输出类似于 JSON 结构示例。 当错误代码为 HardwareValidationThresholdFailed
时,错误消息会包含一个未通过硬件验证的裸机列表(例如,COMP0_SVR0_SERVER_NAME
、COMP1_SVR1_SERVER_NAME
)。 这些名称可用于分析日志以获取更多详细信息。
{
"endTime": "2023-03-24T14:56:59.0510455Z",
"error": {
"code": "HardwareValidationThresholdFailed",
"message": "HardwareValidationThresholdFailed error hardware validation threshold for cluster layout plan is not met for cluster $CLUSTER_NAME in namespace nc-system with listed failed devices $COMP0_SVR0_SERVER_NAME, $COMP1_SVR1_SERVER_NAME"
},
"id": "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.NetworkCloud/locations/$LOCATION/operationStatuses/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e*99399E995...",
"name": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e*99399E995...",
"resourceId": "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$CLUSTER_RESOURCE_GROUP/providers/Microsoft.NetworkCloud/clusters/$CLUSTER_NAME",
"startTime": "2023-03-24T14:56:26.6442125Z",
"status": "Failed"
}
参阅文章使用 Azure CLI 跟踪异步操作了解另一个示例。 有关特定计算机验证或部署失败的详细信息,请参阅 “裸机计算机(BMM)预配故障排除”。
群集部署验证
在门户上或通过 Azure CLI 查看群集的状态:
az networkcloud cluster show --resource-group "$CLUSTER_RG" \
--name "$CLUSTER_NAME"
当 detailedStatus 设置为 Deploying
且 detailedStatusMessage 显示部署进度时,群集部署正在进行中。
详细状态消息中显示的部署进度的一些示例是 Hardware validation is in progress.
(如果集群进行了硬件验证)、Cluster is bootstrapping.
、KCP initialization in progress.
、Management plane deployment in progress.
、Cluster extension deployment in progress.
、waiting for "<rack-ids>" to be ready
等。
当 detailedStatus 设置为 Running
且 detailedStatusMessage 显示消息 Cluster is up and running
时,群集部署已完成。
查看群集的管理版本:
az k8s-extension list --cluster-name "$CLUSTER_NAME" --resource-group "$MRG_NAME" --cluster-type connectedClusters --query "[?name=='nc-platform-extension'].{name:name, extensionType:extensionType, releaseNamespace:scope.cluster.releaseNamespace,provisioningState:provisioningState,version:version}" -o table --subscription "$SUBSCRIPTION_ID"
群集部署日志记录
可在以下位置查看群集创建日志:
- Azure 门户资源/资源组活动日志。
- 在命令行上传递
--debug
标志的 Azure CLI。
删除群集
删除群集会删除 Azure 中的资源和驻留在本地环境中的群集。
重要
如果群集中存在任何租户资源,则删除将失败,直到删除租户资源。
az networkcloud cluster delete --name "$CLUSTER_NAME" --resource-group "$CLUSTER_RG"
注意
最佳做法是,在删除群集后等待 20 分钟,然后再尝试创建具有相同名称的新群集,以确保删除所有关联的资源。