Creación y aprovisionamiento de un clúster mediante la CLI de Azure
En este artículo se describe cómo crear un clúster mediante la interfaz de la línea de comandos de Azure (AzCLI). En este documento también se muestra cómo comprobar el estado, la actualización o la eliminación de un clúster.
Requisitos previos
- Compruebe que el controlador de tejido de red y el administrador de clústeres existen en la región de Azure
- Comprobación de que el tejido de red se ha aprovisionado correctamente
Guía de API y métricas
La guía de API proporciona información sobre los proveedores de recursos, los modelos de recursos y las API.
Las métricas generadas a partir de los datos de registro están disponibles en las métricas de Azure Monitor.
Limitaciones
- Nomenclatura: Las reglas de nomenclatura se pueden encontrar aquí.
Creación de un clúster
La infraestructura del recurso de clúster representa una implementación local de la plataforma dentro del Administrador de clústeres. Todos los demás recursos específicos de la plataforma dependen de él para su ciclo de vida.
Debe crear Network Fabric antes de esta implementación local. Cada instancia local de Operator Nexus tiene una asociación uno a uno con un tejido de red.
Cree el clúster utilizando la CLI de Azure:
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"
Parámetros de las operaciones del clúster
Nombre de parámetro | Descripción |
---|---|
CLUSTER_NAME | Nombre del recurso del clúster |
LOCATION | Región de Azure en la que se implementa el clúster. |
CL_NAME | Ubicación personalizada del Administrador de clústeres desde Azure Portal |
CLUSTER_RG | Nombre del grupo de recursos del clúster |
LAW_ID | Identificador del área de trabajo de Log Analytics del clúster |
CLUSTER_LOCATION | Nombre local del clúster |
AGGR_RACK_RESOURCE_ID | Identificador de bastidor del bastidor agregador |
AGGR_RACK_SKU | SKU del bastidor para el bastidor agregador *Consulte SKU de nube de red de Operator Nexus |
AGGR_RACK_SN | Número de serie de bastidor del bastidor agregador |
AGGR_RACK_LOCATION | Ubicación física del bastidor agregador |
AGGR_RACK_BMM | Se usa solo para la implementación de bastidor único, vacío para varios bastidores. |
SA_NAME | Nombre del dispositivo de almacenamiento |
SA_PASS | Contraseña de administrador del dispositivo de almacenamiento |
SA_USER | Usuario administrador del dispositivo de almacenamiento |
SA_SN | Número de serie del dispositivo de almacenamiento |
COMPX_RACK_RESOURCE_ID | Identificador del bastidor CompX; repetir para cada bastidor de compute-rack-definitions |
COMPX_RACK_SKU | SKU del bastidor CompX; repetir para cada bastidor de compute-rack-definitions *Consulte SKU de nube de red de Operator Nexus |
COMPX_RACK_SN | Número de serie del bastidor CompX; repetir para cada bastidor de compute-rack-definitions |
COMPX_RACK_LOCATION | Ubicación física del bastidor CompX; repetir para cada bastidor de compute-rack-definitions |
COMPX_SVRY_BMC_PASS | Contraseña del controlador de administración de placa base (BMC) de ServerY del bastidor CompX; repetir para cada bastidor de compute-rack-definitions y para cada servidor del bastidor |
COMPX_SVRY_BMC_USER | Usuario de BMC de ServerY del bastidor CompX; repetir para cada bastidor de compute-rack-definitions y para cada servidor del bastidor |
COMPX_SVRY_BMC_MAC | Dirección MAC de BMC de ServerY del bastidor CompX; repetir para cada bastidor de compute-rack-definitions y para cada servidor del bastidor |
COMPX_SVRY_BOOT_MAC | Dirección MAC de la tarjeta de interfaz de red (NIC) de arranque de ServerY del bastidor CompX; repetir para cada bastidor de compute-rack-definitions y para cada servidor del bastidor |
COMPX_SVRY_SERVER_DETAILS | Detalles de ServerY del bastidor CompX; repetir para cada bastidor de compute-rack-definitions y para cada servidor del bastidor |
COMPX_SVRY_SERVER_NAME | Nombre de ServerY del bastidor CompX; repetir para cada bastidor de compute-rack-definitions y para cada servidor del bastidor |
MRG_NAME | Nombre del grupo de recursos administrado del clúster |
MRG_LOCATION | Región de Azure del clúster |
NF_ID | Referencia al tejido de red |
SP_APP_ID | Identificador de aplicación de la entidad de servicio |
SP_PASS | Contraseña de la entidad de servicio |
SP_ID | Id. de entidad de servicio |
TENANT_ID | Identificador de inquilino de la suscripción |
SUBSCRIPTION_ID | Id. de suscripción |
KV_RESOURCE_ID | Id. de Key Vault |
CLUSTER_TYPE | Tipo de clúster, de bastidor único o múltiple |
CLUSTER_VERSION | Versión de nube de red (NC) del clúster |
TAG_KEY1 | Etiqueta opcional 1 que se va a pasar en la creación de clústeres |
TAG_VALUE1 | Valor de la etiqueta opcional 1 que se va a pasar en la creación de clústeres |
TAG_KEY2 | Etiqueta opcional 2 que se va a pasar en la creación de clústeres |
TAG_VALUE2 | Valor de la etiqueta opcional 2 que se va a pasar en la creación de clústeres |
Identidad del clúster
A partir de la versión de la API de 2024-07-01, un cliente puede asignar una identidad administrada a un clúster. Se admiten identidades administradas asignadas por el sistema y asignadas por el usuario.
La identidad administrada se puede asignar al clúster durante las operaciones de creación o actualización proporcionando los siguientes parámetros:
- --mi-system-assigned: habilite la identidad administrada asignada por el sistema. Una vez agregada, la identidad solo se puede quitar a través de la llamada API en este momento.
- --mi-user-assigned: identificadores de recursos separados por espacios de las identidades administradas asignadas por el usuario que se van a agregar. Una vez agregada, la identidad solo se puede quitar a través de la llamada API en este momento.
Creación del clúster mediante el editor de plantillas de Azure Resource Manager
Una manera alternativa de crear un clúster es con el editor de plantillas de ARM.
Para crear el clúster de esta manera, debe proporcionar un archivo de plantilla (cluster.jsonc) y un archivo de parámetros (cluster.parameters.jsonc). Puede encontrar ejemplos de un clúster de SKU de 8 bastidores 2M16C mediante estos dos archivos:
cluster.jsonc, cluster.parameters.jsonc
Nota:
Para obtener el formato correcto, copie el archivo de código sin formato. Los valores del archivo cluster.parameters.jsonc son específicos del cliente y es posible que no sean una lista completa. Actualice los campos de valor de su entorno específico.
- Vaya a Azure Portal en un explorador web e inicie sesión.
- Busque "Implementar una plantilla personalizada" en la barra de búsqueda de Azure Portal y, a continuación, selecciónela en los servicios disponibles.
- Haga clic en Compilar su propia plantilla en el editor.
- Haga clic en Cargar archivo. Busque el archivo de plantilla cluster.jsonc y cárguelo.
- Haga clic en Save(Guardar).
- Haga clic en Editar parámetros.
- Haga clic en Cargar archivo. Busque el archivo de parámetros cluster.parameters.jsonc y cárguelo.
- Haga clic en Save(Guardar).
- Seleccione la suscripción correcta.
- Busque el grupo de recursos para ver si ya existe. Si no es así, cree un nuevo grupo de recursos.
- Asegúrese de que todos los detalles de la instancia son correctos.
- Haga clic en Revisar + crear.
Validación de clústeres
Una creación correcta del clúster de Operator Nexus da como resultado la creación de un recurso de Azure dentro de la suscripción. El identificador del clúster, el estado de aprovisionamiento del clúster y el estado de implementación se devuelven como resultado de una operación cluster create
correcta.
Compruebe el estado del clúster:
az networkcloud cluster show --resource-group "$CLUSTER_RG" \
--cluster-name "$CLUSTER_RESOURCE_NAME"
La creación del clúster se completa cuando el provisioningState
del recurso muestra: "provisioningState": "Succeeded"
Registro de clúster
El clúster crea registros que se pueden ver en las siguientes ubicaciones:
- Recurso de Azure Portal/Registros de actividad del grupo de recursos.
- CLI de Azure con la marca
--debug
en la línea de comandos.
Implementación del clúster
Se puede desencadenar la acción de implementar clúster después de crear el clúster. La acción implementar clúster crea la imagen de arranque e implementa el clúster.
La implementación del clúster inicia una secuencia de eventos que se producen en el Administrador de clústeres.
- Validación de las propiedades del clúster o bastidor.
- Generación de una imagen de arranque para el clúster de arranque efímero (validación de infraestructura).
- Interacción con la interfaz de administración de la plataforma inteligente (IPMI) de la máquina de arranque de destino.
- Realizar comprobaciones de validación del hardware.
- Supervisión del proceso de implementación del clúster.
Implemente el clúster local:
az networkcloud cluster deploy \
--name "$CLUSTER_NAME" \
--resource-group "$CLUSTER_RG" \
--subscription "$SUBSCRIPTION_ID" \
--no-wait --debug
Sugerencia
Para comprobar el estado del comando az networkcloud cluster deploy
, se puede ejecutar mediante la marca --debug
.
Esto le permitirá obtener el encabezado Azure-AsyncOperation
o Location
usado para consultar el recurso operationStatuses
.
Consulte la sección Error de implementación de clústeres para obtener pasos más detallados.
Opcionalmente, el comando puede ejecutarse de forma asincrónica mediante la marca --no-wait
.
Implementación de clústeres con validación de hardware
Durante un proceso de implementación de clúster, uno de los pasos ejecutados es la validación de hardware. El procedimiento de validación de hardware ejecuta varias pruebas y comprobaciones en las máquinas proporcionadas a través de la definición del bastidor del clúster. En función de los resultados de estas comprobaciones y de las máquinas omitidas por el usuario, se realiza una determinación en si hay suficientes nodos pasados o disponibles para cumplir los umbrales necesarios para que la implementación continúe.
Importante
El proceso de validación de hardware escribirá los resultados en el analyticsWorkspaceId
especificado en Creación de clústeres.
Además, la entidad de servicio proporcionada en el objeto Cluster se usa para la autenticación en la API de recopilación de datos del área de trabajo de Log Analytics.
Esta funcionalidad solo es visible durante una nueva implementación (Campo verde); el clúster existente no tendrá los registros disponibles de forma retroactiva.
Nota:
El controlador RAID se restablece durante la implementación del clúster, lo que borra todos los datos de los discos virtuales del servidor. Las alertas de disco virtual del Controlador de administración de placa base (BMC) normalmente se pueden omitir a menos que haya alertas adicionales de disco físico o controladores RAID.
De forma predeterminada, el proceso de validación de hardware escribe los resultados en el clúster analyticsWorkspaceId
configurado.
Sin embargo, debido a la naturaleza de la recopilación de datos del área de trabajo de Log Analytics y la evaluación del esquema, puede haber un retraso de ingesta que puede tardar varios minutos o más.
Por este motivo, la implementación del clúster continúa incluso si se produjo un error al escribir los resultados en el área de trabajo de Log Analytics.
Para ayudar a solucionar este posible evento, los resultados, para la redundancia, también se registran en el Administrador de clústeres.
En el área de trabajo de Log Analytics del objeto Cluster proporcionado, aparecerá una nueva tabla personalizada con el nombre del clúster como prefijo y el sufijo *_CL
.
En la sección Registros del recurso LAW, se puede ejecutar una consulta en la nueva tabla registro personalizado *_CL
.
Implementación de clústeres con omisión de una máquina completa específica
El parámetro --skip-validation-for-machines
representa los nombres de las máquinas sin sistema operativo del clúster que se deben omitir durante la validación de hardware.
Los nodos omitidos no se validan y no se agregan al grupo de nodos.
Además, los nodos omitidos no cuentan con el total utilizado por los cálculos de umbral.
az networkcloud cluster deploy \
--name "$CLUSTER_NAME" \
--resource-group "$CLUSTER_RG" \
--subscription "$SUBSCRIPTION_ID" \
--skip-validations-for-machines "$COMPX_SVRY_SERVER_NAME"
Error en la implementación del clúster
Para realizar un seguimiento del estado de una operación asincrónica, haga la ejecución con una marca --debug
habilitada.
Cuando se especifica --debug
, se puede supervisar el progreso de la solicitud.
La dirección URL de estado de la operación se puede encontrar examinando la salida de depuración que busca el encabezado Azure-AsyncOperation
o Location
en la respuesta HTTP a la solicitud de creación.
Los encabezados pueden proporcionar el campo OPERATION_ID
usado en la llamada 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"
La salida es similar al ejemplo de estructura JSON. Cuando el código de error es HardwareValidationThresholdFailed
, el mensaje de error contiene una lista de máquinas sin sistema operativo que no pudieron validar el hardware (por ejemplo, COMP0_SVR0_SERVER_NAME
, COMP1_SVR1_SERVER_NAME
). Estos nombres se pueden usar para analizar los registros para obtener más detalles.
{
"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"
}
Consulte el artículo Seguimiento de operaciones asincrónicas mediante la CLI de Azure para obtener otro ejemplo. Consulte el artículo Solución de problemas de aprovisionamiento de BMM para obtener más información que puede resultar útil cuando se produce un error en la validación o implementación de máquinas específicas.
Validación de la implementación del clúster
Vea el estado del clúster en el portal o mediante la CLI de Azure:
az networkcloud cluster show --resource-group "$CLUSTER_RG" \
--name "$CLUSTER_NAME"
La implementación del clúster está en curso cuando detailedStatus está establecido en Deploying
y detailedStatusMessage muestra el progreso de la implementación.
Algunos ejemplos de progreso de la implementación que se muestran en detailedStatusMessage son Hardware validation is in progress.
(si el clúster se implementa con validación de hardware),Cluster is bootstrapping.
, KCP initialization in progress.
, Management plane deployment in progress.
, Cluster extension deployment in progress.
, waiting for "<rack-ids>" to be ready
, etc.
La implementación del clúster se completa cuando detailedStatus se establece en Running
y detailedStatusMessage muestra el mensaje Cluster is up and running
.
Vea la versión de administración del clúster:
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"
Registro de la implementación del clúster
El clúster crea registros que se pueden ver en las siguientes ubicaciones:
- Recurso de Azure Portal/Registros de actividad del grupo de recursos.
- CLI de Azure con la marca
--debug
en la línea de comandos.
Actualización de identidades de clúster mediante API
Las identidades administradas de clúster se pueden asignar a través de la CLI. La desasignación de las identidades puede hacerse mediante llamadas a la API.
Nota: <APIVersion>
es la versión de API 2024-07-01 o posterior.
Para quitar todas las identidades administradas, ejecute:
az rest --method PATCH --url /subscriptions/$SUB_ID/resourceGroups/$CLUSTER_RG/providers/Microsoft.NetworkCloud/clusters/$CLUSTER_NAME?api-version=<APIVersion> --body "{\"identity\":{\"type\":\"None\"}}"
Si se agregaron identidades administradas asignadas por el usuario y asignadas por el sistema, se puede quitar el usuario asignado actualizando el
type
aSystemAssigned
:az rest --method PATCH --url /subscriptions/$SUB_ID/resourceGroups/$CLUSTER_RG/providers/Microsoft.NetworkCloud/clusters/$CLUSTER_NAME?api-version=<APIVersion> --body @~/uai-body.json
Ejemplo del cuerpo de la solicitud (uai-body.json):
{ "identity": { "type": "SystemAssigned" } }
Si se agregaron identidades administradas asignadas por el usuario y asignadas por el sistema, se puede quitar el sistema actualizando el
type
aUserAssigned
:az rest --method PATCH --url /subscriptions/$SUB_ID/resourceGroups/$CLUSTER_RG/providers/Microsoft.NetworkCloud/clusters/$CLUSTER_NAME?api-version=<APIVersion> --body @~/uai-body.json
Ejemplo del cuerpo de la solicitud (uai-body.json):
{ "identity": { "type": "UserAssigned", "userAssignedIdentities": { "/subscriptions/$SUB_ID/resourceGroups/$UAI_RESOURCE_GROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$UAI_NAME": {} } } }
Si se agregaron varias identidades administradas asignadas por el usuario, se puede quitar una de ellas ejecutando:
az rest --method PATCH --url /subscriptions/$SUB_ID/resourceGroups/$CLUSTER_RG/providers/Microsoft.NetworkCloud/clusters/$CLUSTER_NAME?api-version=<APIVersion> --body @~/uai-body.json
Ejemplo del cuerpo de la solicitud (uai-body.json):
{ "identity": { "type": "UserAssigned", "userAssignedIdentities": { "/subscriptions/$SUB_ID/resourceGroups/$UAI_RESOURCE_GROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$UAI_NAME": null } } }
Eliminación de un clúster
Al eliminar un clúster, elimina los recursos de Azure y el clúster que reside en el entorno local.
Nota:
Si hay algún recurso de inquilino que exista en el clúster, no se eliminará hasta que se eliminen esos recursos.
az networkcloud cluster delete --name "$CLUSTER_NAME" --resource-group "$CLUSTER_RG"