你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure CLI 创建和预配群集

本文介绍如何使用 Azure 命令行接口 (AzCLI) 创建群集。 本文档还演示如何检查状态、更新或删除群集。

先决条件

  • 验证 Azure 区域中是否存在网络结构控制器和群集管理器
  • 验证是否已成功预配网络结构

API 指南和指标

API 指南提供有关资源提供程序、资源模型和 API 的信息。

从日志记录数据生成的指标在 Azure Monitor 指标中可用。

创建群集

基础结构群集资源表示群集管理器中平台的本地部署。 其他所有特定于平台的资源在其生命周期内都依赖于它。

你应该已经为此本地部署成功创建了网络结构。 每个运营商关系本地实例都与网络结构一对一关联。

创建群集:

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":"$SA_PASS","username":"$SA_USER"},"rackSlot":1,"serialNumber":"$SA_SN","storageApplianceName":"$SA_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 "$NFC_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 "{key-vault-id:$KVRESOURCE_ID, use-key-vault:true}" \
  --cluster-type "$CLUSTER_TYPE" --cluster-version "$CLUSTER_VERSION" \
  --tags $TAG_KEY1="$TAG_VALUE1" $TAG_KEY2="$TAG_VALUE2"

可改为在 ARM 模板编辑器中使用 ARM 模板/参数文件创建群集:

群集操作的参数

参数名称 说明
CLUSTER_NAME 群集的资源名称
LOCATION 在其中部署了群集的 Azure 区域
CL_NAME Azure 门户中的群集管理器自定义位置
CLUSTER_RG 群集资源组名称
LAW_ID 群集的 Log Analytics 工作区 ID
CLUSTER_LOCATION 群集的本地名称
AGGR_RACK_RESOURCE_ID 聚合器机架的 RackID
AGGR_RACK_SKU 聚合器机架的机架 SKU
AGGR_RACK_SN 聚合器机架的机架序列号
AGGR_RACK_LOCATION 聚合器机架的机架物理位置
AGGR_RACK_BMM 仅用于单机架部署,多机架部署为空
SA_NAME 存储设备的设备名称
SA_PASS 存储设备管理员密码
SA_USER 存储设备管理员用户
SA_SN 存储设备序列号
COMPX_RACK_RESOURCE_ID CompX 机架的 RackID,在 compute-rack-definitions 中对每个机架重复
COMPX_RACK_SKU CompX 机架的机架 SKU,在 compute-rack-definitions 中对每个机架重复
COMPX_RACK_SN CompX 机架的机架序列号,在 compute-rack-definitions 中对每个机架重复
COMPX_RACK_LOCATION CompX 机架的机架物理位置,在 compute-rack-definitions 中对每个机架重复
COMPX_SVRY_BMC_PASS CompX Rack ServerY BMC 密码,对 compute-rack-definitions 中的每个机架和机架中的每个服务器重复
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 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 区域
NFC_ID 对网络结构控制器的引用
SP_APP_ID 服务主体应用 ID
SP_PASS 服务主体密码
SP_ID 服务主体 ID
TENANT_ID 订阅租户 ID
SUBSCRIPTION_ID 订阅 ID
KV_RESOURCE_ID 密钥保管库 ID
CLUSTER_TYPE 群集类型:Single 或 MultiRack
CLUSTER_VERSION 群集的 NC 版本
TAG_KEY1 传递给“群集创建”的可选 tag1
TAG_VALUE1 传递给“群集创建”的可选 tag1 值
TAG_KEY2 传递给“群集创建”的可选 tag2
TAG_VALUE2 传递给“群集创建”的可选 tag2 值

群集验证

成功创建运营商关系群集后,会在订阅中创建 AKS 群集。 cluster create 成功后会返回群集 ID、群集预配状态和部署状态。

查看群集的状态:

az networkcloud cluster show --resource-group "$CLUSTER_RG" \
  --cluster-name "$CLUSTER_RESOURCE_NAME"

当资源的 provisioningState 显示 "provisioningState": "Succeeded" 时,表示群集创建完成

群集登录

可在以下位置查看群集创建日志:

  1. 查看 Azure 门户资源/资源组活动日志。
  2. 在 Azure CLI 命令行中传递 --debug 标志。

部署群集

创建完群集后,可以触发部署群集操作。 “部署群集”操作会创建启动映像并部署群集。

“部署群集”会在群集管理器中启动一系列事件

  1. 验证群集/机架属性
  2. 为临时启动群集生成可启动映像(验证基础结构)。
  3. 与目标启动计算机的 IPMI 接口交互。
  4. 执行硬件验证检查
  5. 监视群集部署过程。

部署本地群集:

az networkcloud cluster deploy \
  --name "$CLUSTER_NAME" \
  --resource-group "$CLUSTER_RG" \
  --subscription "$SUBSCRIPTION_ID" \
  --no-wait --debug

提示

若要检查 az networkcloud cluster deploy 命令的状态,可以使用 --debug 标志执行它。 这样,你便能够获取用于查询 operationStatuses 资源的 Azure-AsyncOperationLocation 标头。 如需更详细的步骤,请参阅群集部署失败部分。 (可选)可以使用 --no-wait 标志异步运行该命令。

具有硬件验证的群集部署

在群集部署过程中,执行的步骤之一是硬件验证。 硬件验证过程会运行各种测试,并针对通过群集机架定义提供的计算机进行检查。 根据这些检查的结果和任何用户跳过的计算机,确定是否有足够的节点通过和/或可用于满足继续部署所需的阈值。

重要

硬件验证过程会将结果写入群集创建时指定的 analyticsWorkspaceId。 此外,群集对象中提供的服务主体用于对 Log Analytics 工作区数据收集 API 进行身份验证。 此功能仅在新部署期间可见(绿色字段),现有群集无法以追溯方式获取日志。

默认情况下,硬件验证过程会将结果写入配置的群集 analyticsWorkspaceId。 但是,由于 Log Analytics 工作区数据收集和架构评估的性质,引入延迟可能达到几分钟或更久。 因此,即使未能将结果写入 Log Analytics 工作区,群集部署也会继续。 为了帮助解决这个可能的事件,结果也会在群集管理器中记录,以实现冗余。

在提供的群集对象的 Log Analytics 工作区中,会显示一个新的自定义表,它使用群集的名称作为前缀,后缀 *_CL 应会显示。 在 LAW 资源的“日志”部分中,可以针对新的 *_CL 自定义日志表执行查询。

跳过特定裸机的群集部署操作

可以将参数传递给部署命令,表示群集中应在硬件验证期间跳过的裸机的名称。 跳过的节点不会被验证,也不会添加到节点池。 此外,跳过的节点不会计入阈值计算使用的总数。

az networkcloud cluster deploy \
  --name "$CLUSTER_NAME" \
  --resource-group "$CLUSTER_RG" \
  --subscription "$SUBSCRIPTION_ID" \
  --skip-validations-for-machines "$COMPX_SVRY_SERVER_NAME"

群集部署失败

若要跟踪异步操作的状态,请在运行时启用 --debug 标志。 指定 --debug 后,可以监视请求的进度。 可以通过检查调试输出,查找对创建请求的 HTTP 响应上的 Azure-AsyncOperationLocation 标头来找到操作状态 URL。 这些标头可以提供 HTTP API 调用中使用的 OPERATION_ID 字段。

OPERATION_ID="12312312-1231-1231-1231-123123123123*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_NAMECOMP1_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/12312312-1231-1231-1231-123123123123*99399E995...",
  "name": "12312312-1231-1231-1231-123123123123*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 跟踪异步操作了解另一个示例。

群集部署验证

在门户上或通过 Azure CLI 查看群集的状态:

az networkcloud cluster show --resource-group "$CLUSTER_RG" \
  --name "$CLUSTER_NAME"

当 detailedStatus 设置为 Deploying 且 detailedStatusMessage 显示部署进度时,群集部署正在进行中。 详细 StatusMessage 中显示的一些部署进度示例为 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 等。

Azure 门户的屏幕截图,其中显示群集部署进度 kcp init。

Azure 门户的屏幕截图,其中显示群集部署进度扩展应用程序。

当 detailedStatus 设置为 Running 且 detailedStatusMessage 显示消息 Cluster is up and running 时,群集部署已完成。

Azure 门户的屏幕截图,其中显示群集部署已完成。

查看群集的管理版本:

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"

群集部署日志记录

可在以下位置查看群集创建日志:

  1. 查看 Azure 门户资源/资源组活动日志。
  2. 在 Azure CLI 命令行中传递 --debug 标志。

Azure 门户的屏幕截图,其中显示群集部署进度活动日志。