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.
- Navegue até o portal do Azure em um navegador da Web e entre.
- Procure por 'Implantar um modelo personalizado' na barra de pesquisa do portal do Azure e selecione-o nos serviços disponíveis.
- Clique em Criar seu próprio modelo no editor.
- Clique em Carregar arquivo. Localize o arquivo de modelo cluster.jsonc e carregue-o.
- Clique em Guardar.
- Clique em Editar parâmetros.
- Clique em Carregar arquivo. Localize seu arquivo de parâmetros cluster.parameters.jsonc e carregue-o.
- Clique em Guardar.
- Selecione a Subscrição correta.
- Procure o grupo de recursos para ver se ele já existe. Caso contrário, crie um novo grupo de recursos.
- Verifique se todos os detalhes da instância estão corretos.
- 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 create
arquivo .
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:
- Logs de atividade de Resource/ResourceGroup do portal do Azure.
- 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.
- Validação das propriedades do cluster/rack.
- Geração de uma imagem inicializável para o cluster de bootstrap efêmero (Validação de Infraestrutura).
- Interação com a interface IPMI (Intelligent Platform Management Interface) da máquina de bootstrap de destino.
- Execução de verificações de validação de hardware.
- 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 analyticsWorkspaceId
configurado.
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_NAME
COMP1_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.
A implantação do cluster é concluída quando detailedStatus é definido como Running
e detailedStatusMessage mostra a mensagem Cluster is up and running
.
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:
- Logs de atividade de Resource/ResourceGroup do portal do Azure.
- CLI do Azure com
--debug
sinalizador passado na linha de comando.
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.
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.