Создание и подготовка кластера с помощью Azure CLI
В этой статье описывается, как создать кластер с помощью интерфейса командной строки Azure (AzCLI). В этом документе также показано, как проверить состояние, обновить или удалить кластер.
Необходимые компоненты
- Убедитесь, что в регионе Azure существует контроллер Network Fabric и кластерный manger
- Убедитесь, что Network Fabric успешно подготовлена
Руководство по API и метрики
Руководство по API содержит сведения о поставщиках ресурсов и моделях ресурсов и API.
Метрики, созданные из данных ведения журнала, доступны в метриках Azure Monitor.
Ограничения
- Именование — правила именования можно найти здесь.
Создание кластера
Ресурс кластера инфраструктуры представляет локальное развертывание платформы в диспетчере кластеров. Все остальные ресурсы, относящиеся к платформе, зависят от него в течение своего жизненного цикла.
Перед развертыванием в локальной среде необходимо создать Network Fabric. Каждый локальный экземпляр Оператора Nexus имеет связь "один к одному" с Network Fabric.
Создайте кластер с помощью Azure CLI:
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 "$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 "{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"
Параметры для операций кластера
Наименование параметра | Description |
---|---|
CLUSTER_NAME | Имя ресурса кластера |
LOCATION | Регион Azure, в котором развернут кластер |
CL_NAME | Пользовательское расположение диспетчера кластеров из портал Azure |
CLUSTER_RG | Имя группы ресурсов кластера |
LAW_ID | Идентификатор рабочей области Log Analytics для кластера |
CLUSTER_LOCATION | Локальное имя кластера |
AGGR_RACK_RESOURCE_ID | RackID для агрегатной стойки |
AGGR_RACK_SKU | SKU стойки для агрегатной стойки *См . номера SKU оператора Nexus Network Cloud SKU |
AGGR_RACK_SN | Серийный номер стойки для агрегатной стойки |
AGGR_RACK_LOCATION | Физическое расположение стойки для агрегатной стойки |
AGGR_RACK_BMM | Используется только для развертывания одной стойки, пустой для нескольких стоек |
SA_NAME | Имя устройства хранилища |
SA_PASS | Пароль администратора устройства хранилища |
SA_USER | Пользователь администратора устройства хранилища |
SA_SN | Серийный номер устройства хранилища |
COMPX_RACK_RESOURCE_ID | RackID для стойки CompX; повторение для каждой стойки в определениях вычислительных стоек |
COMPX_RACK_SKU | Номер SKU стойки для стойки CompX; повторение для каждой стойки в определениях вычислительных стоек *См . номера SKU сетевых номеров SKU оператора Nexus Network |
COMPX_RACK_SN | Серийный номер стойки для стойки CompX; повторение для каждой стойки в определениях вычислительных стоек |
COMPX_RACK_LOCATION | Физическое расположение стойки для стойки CompX; повторение для каждой стойки в определениях вычислительных стоек |
COMPX_SVRY_BMC_PASS | Пароль контроллера управления базовой платой (BMC) CompX Rack Servery; повторяйте для каждой стойки в определениях вычислительных стоек и для каждого сервера в стойке |
COMPX_SVRY_BMC_USER | Пользователь BMC CompX Rack ServerY; повторяйте для каждой стойки в определениях вычислительных стоек и для каждого сервера в стойке |
COMPX_SVRY_BMC_MAC | Mac-адрес CompX RackY BMC; повторяйте для каждой стойки в определениях вычислительных стоек и для каждого сервера в стойке |
COMPX_SVRY_BOOT_MAC | Mac-адрес mac-карты сетевого интерфейса CompX Rack ServerY; повторяйте для каждой стойки в определениях вычислительных стоек и для каждого сервера в стойке |
COMPX_SVRY_SERVER_DETAILS | Сведения о серверной стойке CompX; повторяйте для каждой стойки в определениях вычислительных стоек и для каждого сервера в стойке |
COMPX_SVRY_SERVER_NAME | Имя сервера стоек CompX; повторяйте для каждой стойки в определениях вычислительных стоек и для каждого сервера в стойке |
MRG_NAME | Имя группы управляемых ресурсов кластера |
MRG_LOCATION | Регион Azure кластера |
NF_ID | Ссылка на Network Fabric |
SP_APP_ID | Идентификатор приложения субъекта-службы |
SP_PASS | Пароль субъекта-службы |
SP_ID | Идентификатор субъекта-службы |
TENANT_ID | Идентификатор клиента подписки |
SUBSCRIPTION_ID | ИД подписки |
KV_RESOURCE_ID | Идентификатор Key Vault |
CLUSTER_TYPE | Тип кластера, single или MultiRack |
CLUSTER_VERSION | Версия кластера network Cloud (NC) |
TAG_KEY1 | Необязательный тег1 для передачи в создание кластера |
TAG_VALUE1 | Необязательное значение тега1 для передачи в создание кластера |
TAG_KEY2 | Необязательный тег 2 для передачи в создание кластера |
TAG_VALUE2 | Необязательное значение тега 2 для передачи в создание кластера |
Удостоверение кластера
Начиная с версии API 2024-07-01, клиент может назначить управляемое удостоверение кластеру. Поддерживаются управляемые удостоверения, назначенные системой и назначаемые пользователем.
Управляемое удостоверение можно назначить кластеру во время создания или обновления, указав следующие параметры:
- --mi-system-assigned — включение управляемого удостоверения, назначаемого системой. После добавления удостоверение можно удалить только через вызов API в настоящее время.
- --mi-user-assigned — идентификаторы ресурсов, разделенных пробелами, для добавленных управляемых удостоверений, назначенных пользователем. После добавления удостоверение можно удалить только через вызов API в настоящее время.
Создание кластера с помощью редактора шаблонов Azure Resource Manager
Альтернативным способом создания кластера является редактор шаблонов ARM.
Чтобы создать кластер таким образом, необходимо предоставить файл шаблона (cluster.jsonc) и файл параметров (cluster.parameters.jsonc). Примеры для кластера SKU с 8-стойкой 2M16C можно найти с помощью этих двух файлов:
cluster.jsonc , cluster.parameters.jsonc
Примечание.
Чтобы получить правильное форматирование, скопируйте необработанный файл кода. Значения в файле cluster.parameters.jsonc зависят от клиента и не могут быть полным списком. Обновите поля значений для конкретной среды.
- Перейдите к портал Azure в веб-браузере и войдите в систему.
- Найдите "Развернуть пользовательский шаблон" в строке поиска портал Azure и выберите его из доступных служб.
- Щелкните "Создать собственный шаблон" в редакторе.
- Щелкните "Загрузить файл". Найдите файл шаблона cluster.jsonc и отправьте его.
- Нажмите кнопку Сохранить.
- Нажмите кнопку "Изменить параметры".
- Нажмите кнопку "Загрузить файл". Найдите файл параметров cluster.parameters.jsonc и отправьте его.
- Нажмите кнопку Сохранить.
- Выберите правильную подписку.
- Найдите группу ресурсов, чтобы узнать, существует ли она. Если нет, создайте новую группу ресурсов.
- Убедитесь, что все сведения об экземпляре верны.
- Щелкните Просмотреть и создать.
Проверка кластера
Успешное создание кластера Nexus операторов приводит к созданию ресурса Azure в подписке. Идентификатор кластера, состояние подготовки кластера и состояние развертывания возвращаются в результате успешного выполнения cluster create
.
Просмотрите состояние кластера:
az networkcloud cluster show --resource-group "$CLUSTER_RG" \
--cluster-name "$CLUSTER_RESOURCE_NAME"
Создание кластера завершается после того, как provisioningState
ресурс отображает: "provisioningState": "Succeeded"
Ведение журнала кластера
Журналы создания кластера можно просмотреть в следующих расположениях:
- портал Azure журналы действий Resource/ResourceGroup.
- Azure CLI с
--debug
флагом, переданным в командной строке.
Развертывание кластера
Действие развертывания кластера можно активировать после создания кластера. Действие развертывания кластера создает образ начальной загрузки и развертывает кластер.
Развертывание кластера инициирует последовательность событий, происходящих в диспетчере кластеров.
- Проверка свойств кластера или стойки.
- Создание загрузочного образа для эфемерного кластера начальной загрузки (проверка инфраструктуры).
- Взаимодействие с интерфейсом интеллектуального интерфейса управления платформой (IPMI) целевого компьютера начальной загрузки.
- Выполнение проверок оборудования.
- Мониторинг процесса развертывания кластера.
Разверните локальный кластер:
az networkcloud cluster deploy \
--name "$CLUSTER_NAME" \
--resource-group "$CLUSTER_RG" \
--subscription "$SUBSCRIPTION_ID" \
--no-wait --debug
Совет
Чтобы проверить состояние az networkcloud cluster deploy
команды, ее можно выполнить с помощью флага --debug
.
Это позволит получить или Location
заголовок, используемый Azure-AsyncOperation
для запроса operationStatuses
ресурса.
Дополнительные сведения см. в разделе " Сбой развертывания кластера".
При необходимости команда может выполняться асинхронно с помощью флага --no-wait
.
Развертывание кластера с проверкой оборудования
Во время процесса развертывания кластера выполняется одна из этапов проверки оборудования. Процедура проверки оборудования выполняет различные проверки и проверяет компьютеры, предоставляемые с помощью определения стойки кластера. На основе результатов этих проверок и всех пропущенных пользователем компьютеров определяется, достаточно ли переданных узлов и /или доступны для удовлетворения пороговых значений, необходимых для продолжения развертывания.
Внимание
Процесс проверки оборудования записывает результаты в указанный analyticsWorkspaceId
в разделе "Создание кластера".
Кроме того, предоставленный субъект-служба в объекте кластера используется для проверки подлинности в API сбора данных рабочей области Log Analytics.
Эта возможность отображается только во время нового развертывания (зеленое поле); существующий кластер не будет иметь журналы, доступные ретроактивно.
Примечание.
Контроллер RAID сбрасывается во время развертывания кластера, обтирая все данные с виртуальных дисков сервера. Любые оповещения контроллера управления базовыми дисками (BMC) обычно могут игнорироваться, если не существует дополнительных оповещений физических дисков и (или) контроллеров RAID.
По умолчанию процесс проверки оборудования записывает результаты в настроенный кластер 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"
Сбой развертывания кластера
Чтобы отслеживать состояние асинхронной операции, запустите с включенным флагом --debug
.
При --debug
указании ход выполнения запроса можно отслеживать.
URL-адрес состояния операции можно найти, проверив выходные данные отладки, Azure-AsyncOperation
которые ищут в Location
ответе HTTP на запрос на создание.
Заголовки могут предоставлять OPERATION_ID
поле, используемое в вызове API HTTP.
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_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/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 " для другого примера. Дополнительные сведения см. в статье "Устранение неполадок подготовки BMM", которые могут оказаться полезными при сбое проверки или развертывания конкретных компьютеров.
Проверка развертывания кластера
Просмотрите состояние кластера на портале или с помощью Azure CLI:
az networkcloud cluster show --resource-group "$CLUSTER_RG" \
--name "$CLUSTER_NAME"
Развертывание кластера выполняется, когда для подробных данныхStatus задано Deploying
значение и подробное значениеStatusMessage показывает ход развертывания.
Ниже приведены некоторые примеры хода развертывания, показанные в подробной версии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
т. д.
Развертывание кластера будет завершено, когда для подробного значенияStatusMessage задано Running
значение и подробно отображается сообщение 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 журналы действий Resource/ResourceGroup.
- Azure CLI с
--debug
флагом, переданным в командной строке.
Обновление удостоверений кластера с помощью API
Управляемые удостоверения кластера можно назначать с помощью ИНТЕРФЕЙСА командной строки. Отмена назначения удостоверений осуществляется с помощью вызовов API.
Обратите внимание, <APIVersion>
что API версии 2024-07-01 или более поздней версии.
Чтобы удалить все управляемые удостоверения, выполните следующую команду:
az rest --method PATCH --url /subscriptions/$SUB_ID/resourceGroups/$CLUSTER_RG/providers/Microsoft.NetworkCloud/clusters/$CLUSTER_NAME?api-version=<APIVersion> --body "{\"identity\":{\"type\":\"None\"}}"
Если были добавлены управляемые удостоверения, назначаемые пользователем и назначаемым системой, можно удалить, обновив следующие
type
SystemAssigned
:az rest --method PATCH --url /subscriptions/$SUB_ID/resourceGroups/$CLUSTER_RG/providers/Microsoft.NetworkCloud/clusters/$CLUSTER_NAME?api-version=<APIVersion> --body @~/uai-body.json
Пример текста запроса (uai-body.json):
{ "identity": { "type": "SystemAssigned" } }
Если добавлены управляемые удостоверения, назначаемые пользователем и назначаемые системой, можно удалить, обновив следующие
type
UserAssigned
значения:az rest --method PATCH --url /subscriptions/$SUB_ID/resourceGroups/$CLUSTER_RG/providers/Microsoft.NetworkCloud/clusters/$CLUSTER_NAME?api-version=<APIVersion> --body @~/uai-body.json
Пример текста запроса (uai-body.json):
{ "identity": { "type": "UserAssigned", "userAssignedIdentities": { "/subscriptions/$SUB_ID/resourceGroups/$UAI_RESOURCE_GROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$UAI_NAME": {} } } }
Если добавлены несколько управляемых удостоверений, назначенных пользователем, один из них можно удалить, выполнив следующие действия:
az rest --method PATCH --url /subscriptions/$SUB_ID/resourceGroups/$CLUSTER_RG/providers/Microsoft.NetworkCloud/clusters/$CLUSTER_NAME?api-version=<APIVersion> --body @~/uai-body.json
Пример текста запроса (uai-body.json):
{ "identity": { "type": "UserAssigned", "userAssignedIdentities": { "/subscriptions/$SUB_ID/resourceGroups/$UAI_RESOURCE_GROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$UAI_NAME": null } } }
Удаление кластера
Удаление кластера удаляет ресурсы в Azure и кластере, который находится в локальной среде.
Примечание.
Если в кластере существуют какие-либо ресурсы клиента, они не будут удалены до тех пор, пока эти ресурсы не будут удалены.
az networkcloud cluster delete --name "$CLUSTER_NAME" --resource-group "$CLUSTER_RG"