Share via


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:

  1. Recurso de Azure Portal/Registros de actividad del grupo de recursos.
  2. 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

  1. Validación de las propiedades del clúster o bastidor
  2. Generación de una imagen de arranque para el clúster de arranque efímero (validación de infraestructura).
  3. Interacción con la interfaz IPMI de la máquina de arranque de destino.
  4. Realizar comprobaciones de validación del hardware
  5. 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.

Captura de pantalla de Azure Portal en la que se muestra el progreso de la implementación del clúster kcp init.

Captura de pantalla de Azure Portal en la que se muestra la aplicación de extensión de progreso de implementación del clúster.

La implementación del clúster se completa cuando detailedStatus se establece en Running y detailedStatusMessage muestra el mensaje Cluster is up and running.

Captura de pantalla de Azure Portal en la que se muestra la implementación del clúster completada.

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:

  1. Recurso de Azure Portal/Registros de actividad del grupo de recursos.
  2. CLI de Azure con la marca --debug en la línea de comandos.

Captura de pantalla de Azure Portal que muestra el registro de actividad de progreso de implementación del clúster.