Partilhar via


Criar e provisionar um cluster usando a CLI do Azure

Este artigo descreve como criar um cluster usando a interface de linha de comando do Azure (AzCLI). Este documento também mostra como verificar o status, atualizar ou excluir um Cluster.

Pré-requisitos

  • Verifique se o Controlador de Malha de Rede e o Gerenciador de Cluster existem em sua região do Azure
  • Verifique se o Network Fabric foi provisionado com êxito

Guia e métricas da API

O guia da API fornece informações sobre os provedores de recursos e modelos de recursos e as APIs.

As métricas geradas a partir dos dados de log estão disponíveis nas métricas do Azure Monitor.

Limitações

  • Nomenclatura - As regras de nomenclatura podem ser encontradas aqui.

Criar um cluster

O recurso Cluster de Infraestrutura representa uma implantação local da plataforma no Gerenciador de Clusters. Todos os outros recursos específicos da plataforma dependem dele para o seu ciclo de vida.

Você deve criar o Network Fabric antes dessa implantação local. Cada instância local do Operator Nexus tem uma associação um-para-um com uma malha de rede.

Crie o cluster usando a CLI do 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 para operações de cluster

Nome do parâmetro Description
CLUSTER_NAME Nome do recurso do cluster
LOCALIZAÇÃO A Região do Azure onde o Cluster é implantado
CL_NAME O Local Personalizado do Gerenciador de Cluster do portal do Azure
CLUSTER_RG O nome do grupo de recursos de cluster
LAW_ID ID do espaço de trabalho do Log Analytics para o cluster
CLUSTER_LOCATION O nome local do cluster
AGGR_RACK_RESOURCE_ID RackID para rack agregador
AGGR_RACK_SKU SKU de rack para rack agregador *Consulte SKUs de nuvem de rede Nexus do operador
AGGR_RACK_SN Número de série do rack para rack agregador
AGGR_RACK_LOCATION Localização física do rack para rack agregador
AGGR_RACK_BMM Usado apenas para implantação de rack único, vazio para vários racks
SA_NAME Nome do dispositivo do dispositivo de armazenamento
SA_PASS Palavra-passe de administrador do Storage Appliance
SA_USER Usuário administrador do Storage Appliance
SA_SN Número de série do Storage Appliance
COMPX_RACK_RESOURCE_ID RackID para rack CompX; repetir para cada rack em definições de rack de computação
COMPX_RACK_SKU Rack SKU para rack CompX; repetir para cada rack em definições de rack de computação *Consulte SKUs de nuvem de rede Nexus do operador
COMPX_RACK_SN Número de série do rack para rack CompX; repetir para cada rack em definições de rack de computação
COMPX_RACK_LOCATION Localização física do rack para rack CompX; repetir para cada rack em definições de rack de computação
COMPX_SVRY_BMC_PASS Senha do CompX Rack ServerY Baseboard Management Controller (BMC); Repita para cada rack em definições de rack de computação e para cada servidor em rack
COMPX_SVRY_BMC_USER Usuário do CompX Rack ServerY BMC; Repita para cada rack em definições de rack de computação e para cada servidor em rack
COMPX_SVRY_BMC_MAC CompX Rack ServerY BMC MAC endereço; Repita para cada rack em definições de rack de computação e para cada servidor em rack
COMPX_SVRY_BOOT_MAC CompX Rack ServerY inicialização Network Interface Card (NIC) endereço MAC; Repita para cada rack em definições de rack de computação e para cada servidor em rack
COMPX_SVRY_SERVER_DETAILS Detalhes do CompX Rack ServerY; Repita para cada rack em definições de rack de computação e para cada servidor em rack
COMPX_SVRY_SERVER_NAME Nome CompX Rack ServerY; Repita para cada rack em definições de rack de computação e para cada servidor em rack
MRG_NAME Nome do grupo de recursos gerenciados pelo cluster
MRG_LOCATION Região do Azure do cluster
NF_ID Referência ao Network Fabric
SP_APP_ID ID do aplicativo da entidade de serviço
SP_PASS Palavra-passe da entidade de serviço
SP_ID ID da entidade de serviço
TENANT_ID ID do locatário da assinatura
SUBSCRIPTION_ID ID de Subscrição
KV_RESOURCE_ID ID do Cofre da Chave
CLUSTER_TYPE Tipo de cluster, Single ou MultiRack
CLUSTER_VERSION Versão do cluster Network Cloud (NC)
TAG_KEY1 Tag1 opcional para passar para Criar Cluster
TAG_VALUE1 Valor tag1 opcional a ser passado para Cluster Create
TAG_KEY2 Tag2 opcional para passar para a Criação de Cluster
TAG_VALUE2 Valor tag2 opcional a ser passado para Cluster Create

Identidade do cluster

A partir da versão 2024-07-01 da API, um cliente pode atribuir identidade gerenciada a um Cluster. Há suporte para identidades gerenciadas atribuídas pelo sistema e atribuídas pelo usuário.

Uma vez adicionada, a identidade só pode ser removida por meio da chamada de API no momento.

Consulte Suporte ao Cluster do Nexus do Operador do Azure para Identidades Gerenciadas e Recursos Fornecidos pelo Usuário para obter mais informações sobre identidades gerenciadas para Clusters do Nexus do Operador.

Criar o Cluster usando o editor de modelos do Azure Resource Manager

Uma maneira alternativa de criar um cluster é com o editor de modelos ARM.

Para criar o cluster dessa forma, você precisa fornecer um arquivo de modelo (cluster.jsonc) e um arquivo de parâmetro (cluster.parameters.jsonc). Você pode encontrar exemplos de um cluster SKU 2M16C de 8 racks usando estes dois arquivos:

cluster.jsonc , cluster.parameters.jsonc

Nota

Para obter a formatação correta, copie o arquivo de código bruto. Os valores dentro do arquivo cluster.parameters.jsonc são específicos do cliente e podem não ser uma lista completa. Atualize os campos de valor para seu ambiente específico.

  1. Navegue até o portal do Azure em um navegador da Web e entre.
  2. Procure por 'Implantar um modelo personalizado' na barra de pesquisa do portal do Azure e selecione-o nos serviços disponíveis.
  3. Clique em Criar seu próprio modelo no editor.
  4. Clique em Carregar arquivo. Localize o arquivo de modelo cluster.jsonc e carregue-o.
  5. Clique em Guardar.
  6. Clique em Editar parâmetros.
  7. Clique em Carregar arquivo. Localize seu arquivo de parâmetros cluster.parameters.jsonc e carregue-o.
  8. Clique em Guardar.
  9. Selecione a Subscrição correta.
  10. Procure o grupo de recursos para ver se ele já existe. Caso contrário, crie um novo grupo de recursos.
  11. Verifique se todos os detalhes da instância estão corretos.
  12. Clique em Rever + criar.

Validação de cluster

Uma criação bem-sucedida do Operator Nexus Cluster resulta na criação de um recurso do Azure dentro da sua assinatura. A ID do cluster, o estado de provisionamento do cluster e o estado de implantação são retornados como resultado de um cluster createarquivo .

Veja o estado do Cluster:

az networkcloud cluster show --cluster-name "<clusterName>" /
--resource-group "<resourceGroupName>" /
--subscription <subscriptionID>

A criação do cluster é concluída quando o provisioningState recurso mostra: "provisioningState": "Succeeded"

Registo de cluster

Os logs de criação de cluster podem ser visualizados nos seguintes locais:

  1. Logs de atividade de Resource/ResourceGroup do portal do Azure.
  2. CLI do Azure com --debug sinalizador passado na linha de comando.

Definir limites de implantação

Há dois tipos de limites de implantação que podem ser definidos em um cluster antes da implantação do cluster. compute-deployment-threshold São e update-strategy.

--compute-deployment-threshold - O limiar de validação que indica as falhas permitidas dos nós de computação durante a validação de hardware do ambiente.

Se compute-deployment-threshold não estiver definido, os padrões são os seguintes:

      "strategyType": "Rack",
      "thresholdType": "PercentSuccess",
      "thresholdValue": 80,
      "waitTimeMinutes": 1

Se o cliente solicitar que compute-deployment-threshold ele seja diferente do padrão de 80%, você poderá executar o seguinte comando de atualização de cluster.

O exemplo abaixo é para um cliente que solicita o tipo "PercentSuccess" com uma taxa de sucesso de 97%.

az networkcloud cluster update --name "<clusterName>" /
--resource-group "<resourceGroup>" /
--compute-deployment-threshold type="PercentSuccess" grouping="PerCluster" value=97 /
--subscription <subscriptionID>

Validar atualização

az networkcloud cluster show --resource-group "<resourceGroup>" --name "<clusterName>" | grep -a3 computeDeploymentThreshold

  "clusterType": "MultiRack",
  "clusterVersion": "<CLUSTER_VERSION>",
  "computeDeploymentThreshold": {
    "grouping": "PerCluster",
    "type": "PercentSuccess",
    "value": 97

Neste exemplo, se menos de 97% dos nós de computação que estão sendo implantados passarem na validação de hardware, a implantação do cluster falhará. NOTA: Todos os planos de controle do kubernetes (KCP) e do plano de gerenciamento de nexo (NMP) devem passar pela validação de hardware. Se 97% ou mais dos nós de computação que estão sendo implantados passarem na validação de hardware, a implantação do cluster continuará para a fase de provisionamento de bootstrap. Durante o provisionamento de bootstrap de computação, o update-strategy (abaixo) é usado para nós de computação.

--update-strategy - A estratégia para atualizar o cluster indicando as falhas de nó de computação permitidas durante o provisionamento de bootstrap.

Se o cliente solicitar um update-strategy limite diferente do padrão de 80%, você poderá executar o seguinte comando de atualização de cluster.

az networkcloud cluster update --name "<clusterName>" /
--resource-group "<resourceGroup>" /
--update-strategy strategy-type="Rack" threshold-type="PercentSuccess" /
threshold-value="<thresholdValue>" wait-time-minutes=<waitTimeBetweenRacks> /
--subscription <subscriptionID>

O tipo de estratégia pode ser "Rack" (Rack by Rack) OU "PauseAfterRack" (Aguarde a resposta do cliente continuar).

O tipo de limite pode ser "PercentSuccess" OU "CountSuccess".

Se updateStrategy não estiver definido, os padrões serão os seguintes:

      "strategyType": "Rack",
      "thresholdType": "PercentSuccess",
      "thresholdValue": 80,
      "waitTimeMinutes": 1

O exemplo abaixo é para um cliente que usa a estratégia Rack by Rack com uma porcentagem de sucesso de 60% e uma pausa de 1 minuto.

az networkcloud cluster update --name "<clusterName>" /
--resource-group "<resourceGroup>" /
--update-strategy strategy-type="Rack" threshold-type="PercentSuccess" /
threshold-value=60 wait-time-minutes=1 /
--subscription <subscriptionID>

Verifique a atualização:

az networkcloud cluster show --resource-group "<resourceGroup>" /
--name "<clusterName>" /
--subscription <subscriptionID>| grep -a5 updateStrategy

      "strategyType": "Rack",
      "thresholdType": "PercentSuccess",
      "thresholdValue": 60,
      "waitTimeMinutes": 1

Neste exemplo, se menos de 60% dos nós de computação que estão sendo provisionados em um rack falharem no provisionamento (em uma base rack a rack), a implantação do cluster falhará. Se 60% ou mais dos nós de computação forem provisionados com êxito, a implantação de cluster passará para o próximo rack de nós de computação.

O exemplo abaixo é para um cliente que usa a estratégia Rack by Rack com um tipo de limite CountSuccess de 10 nós por rack e uma pausa de 1 minuto.

az networkcloud cluster update --name "<clusterName>" /
--resource-group "<resourceGroup>" /
--update-strategy strategy-type="Rack" threshold-type="CountSuccess" /
threshold-value=10 wait-time-minutes=1 /
--subscription <subscriptionID>

Verifique a atualização:

az networkcloud cluster show --resource-group "<resourceGroup>" /
--name "<clusterName>" /
--subscription <subscriptionID>| grep -a5 updateStrategy

      "strategyType": "Rack",
      "thresholdType": "CountSuccess",
      "thresholdValue": 10,
      "waitTimeMinutes": 1

Neste exemplo, se menos de 10 nós de computação que estão sendo provisionados em um rack falharem no provisionamento (em uma base rack a rack), a implantação do cluster falhará. Se 10 ou mais dos nós de computação forem provisionados com êxito, a implantação de cluster passará para o próximo rack de nós de computação.

Nota

Os limites de implantação não podem ser alterados após o início da implantação do cluster.

Implantar cluster

A ação implantar Cluster pode ser acionada após a criação do Cluster. A ação implantar Cluster cria a imagem de bootstrap e implanta o Cluster.

Implantar Cluster inicia uma sequência de eventos que ocorrem no Gerenciador de Cluster.

  1. Validação das propriedades do cluster/rack.
  2. Geração de uma imagem inicializável para o cluster de bootstrap efêmero (Validação de Infraestrutura).
  3. Interação com a interface IPMI (Intelligent Platform Management Interface) da máquina de bootstrap de destino.
  4. Execução de verificações de validação de hardware.
  5. Monitoramento do processo de implantação do Cluster.

Implante o cluster local:

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

Gorjeta

Para verificar o status do az networkcloud cluster deploy comando, ele pode ser executado usando o --debug sinalizador. Isso permitirá que você obtenha o Azure-AsyncOperation cabeçalho ou Location usado para consultar o operationStatuses recurso. Consulte a seção Falha na implantação do cluster para obter etapas mais detalhadas. Opcionalmente, o comando pode ser executado de forma assíncrona usando o --no-wait sinalizador.

Implantação de cluster com validação de hardware

Durante um processo de implantação de cluster, uma das etapas executadas é a validação de hardware. O procedimento de validação de hardware executa vários testes e verificações em relação às máquinas fornecidas através da definição de rack do Cluster. Com base nos resultados dessas verificações e em qualquer máquina ignorada pelo usuário, é feita uma determinação sobre se nós suficientes passaram e/ou estão disponíveis para atender aos limites necessários para que a implantação continue.

Importante

O processo de validação de hardware gravará os resultados no especificado analyticsWorkspaceId em Criação de Cluster. Além disso, a entidade de serviço fornecida no objeto Cluster é usada para autenticação na API de coleta de dados do espaço de trabalho do Log Analytics. Esta capacidade só é visível durante uma nova implantação (Campo Verde); O cluster existente não terá os logs disponíveis retroativamente.

Nota

O controlador RAID é redefinido durante a implantação do Cluster, limpando todos os dados dos discos virtuais do servidor. Qualquer alerta de disco virtual do Baseboard Management Controller (BMC) normalmente pode ser ignorado, a menos que haja alertas adicionais de disco físico e/ou controladores RAID.

Por padrão, o processo de validação de hardware grava os resultados no cluster analyticsWorkspaceIdconfigurado. No entanto, devido à natureza da coleta de dados do Log Analytics Workspace e da avaliação do esquema, pode haver um atraso de ingestão que pode levar vários minutos ou mais. Por esse motivo, a implantação do Cluster prossegue mesmo se houver uma falha ao gravar os resultados no Espaço de Trabalho do Log Analytics. Para ajudar a resolver esse possível evento, os resultados, para redundância, também são registrados no Gerenciador de Cluster.

No espaço de trabalho do Log Analytics do objeto Cluster fornecido, uma nova tabela personalizada com o nome do cluster como prefixo e o sufixo *_CL deve aparecer. Na seção Logs do recurso LAW, uma consulta pode ser executada na nova *_CL tabela Log personalizado.

Implantação de cluster com pular máquina bare-metal específica

O --skip-validation-for-machines parâmetro representa os nomes de máquinas bare metal no cluster que devem ser ignorados durante a validação de hardware. Os nós ignorados não são validados e não são adicionados ao pool de nós. Além disso, os nós ignorados não contam para o total usado pelos cálculos de limite.

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

Falha na implantação do cluster

Para controlar o status de uma operação assíncrona, execute com um --debug sinalizador habilitado. Quando --debug especificado, o progresso da solicitação pode ser monitorado. A URL de status da operação pode ser encontrada examinando a saída de depuração procurando o Azure-AsyncOperation cabeçalho ou Location na resposta HTTP à solicitação de criação. Os cabeçalhos podem fornecer o OPERATION_ID campo usado na chamada de API HTTP.

OPERATION_ID="aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e*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"

A saída é semelhante ao exemplo JSON struct. Quando o código de erro é HardwareValidationThresholdFailed, a mensagem de erro contém uma lista de máquinas bare metal que falharam na validação de hardware (por exemplo, COMP0_SVR0_SERVER_NAMECOMP1_SVR1_SERVER_NAME, ). Esses nomes podem ser usados para analisar os logs para obter mais detalhes.

{
  "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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e*99399E995...",
  "name": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e*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 o artigo Rastreando operações assíncronas usando a CLI do Azure para obter outro exemplo. Consulte o artigo Solucionar problemas de provisionamento do BMM para obter mais informações que podem ser úteis quando máquinas específicas falham na validação ou implantação.

Validação da implantação de cluster

Exiba o status do cluster no portal ou por meio da CLI do Azure:

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

A implantação do Cluster está em andamento quando detailedStatus é definido como Deploying e detailedStatusMessage mostra o progresso da implantação. Alguns exemplos de progresso da implantação mostrados em detailedStatusMessage são Hardware validation is in progress. (se o cluster for implantado com validação 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 ecrã do portal do Azure a mostrar o progresso da implementação do cluster kcp init.

Captura de tela do portal do Azure mostrando o aplicativo de extensão de progresso de implantação de cluster.

A implantação do cluster é concluída quando detailedStatus é definido como Running e detailedStatusMessage mostra a mensagem Cluster is up and running.

Captura de tela do portal do Azure mostrando a implantação do cluster concluída.

Exiba a versão de gerenciamento do cluster:

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"

Log de implantação de cluster

Os logs de criação de cluster podem ser visualizados nos seguintes locais:

  1. Logs de atividade de Resource/ResourceGroup do portal do Azure.
  2. CLI do Azure com --debug sinalizador passado na linha de comando.

Captura de ecrã do portal do Azure a mostrar o registo de atividades de progresso da implementação do cluster.

Eliminar um cluster

A exclusão de um cluster exclui os recursos no Azure e o cluster que reside no ambiente local.

Nota

Se houver recursos de locatário existentes no cluster, ele não será excluído até que esses recursos sejam excluídos.

Captura de tela do portal mostrando a falha na exclusão devido a recursos do locatário.

az networkcloud cluster delete --name "$CLUSTER_NAME" --resource-group "$CLUSTER_RG"

Nota

Recomenda-se aguardar 20 minutos após a exclusão do cluster antes de tentar criar um novo cluster com o mesmo nome.