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.
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 haber creado correctamente el tejido de red para 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:
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"
En su lugar, puede crear un clúster con una plantilla de ARM o archivos de parámetros en el Editor de plantillas de ARM:
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 de bastidor del bastidor agregador |
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 |
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 de 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 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 |
NFC_ID | Referencia al controlador de 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 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 |
Validación de clústeres
Una creación correcta del clúster de Operator Nexus da como resultado la creación de un clúster de AKS 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
Una vez creado un clúster, se puede desencadenar la acción implementar clúster. La acción implementar clúster crea la imagen de arranque e implementa el clúster.
La implementación del clúster hace que se produzca una secuencia de eventos 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 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.
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
.
Acción de implementación de clústeres con omisión de una máquina completa específica
Se puede pasar un parámetro al comando de implementación que 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.
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.