Dela via


Skapa och etablera ett kluster med Azure CLI

Den här artikeln beskriver hur du skapar ett kluster med hjälp av Azure-kommandoradsgränssnittet (AzCLI). Det här dokumentet visar också hur du kontrollerar status, uppdaterar eller tar bort ett kluster.

Förutsättningar

  • Kontrollera att Network Fabric Controller och Cluster Manger finns i din Azure-region
  • Kontrollera att Network Fabric har etablerats

API-guide och mått

API-guiden innehåller information om resursprovidrar och resursmodeller samt API:erna.

De mått som genereras från loggningsdata är tillgängliga i Azure Monitor-mått.

Begränsningar

  • Namngivning – Namngivningsregler finns här.

Skapa ett kluster

Infrastrukturklusterresursen representerar en lokal distribution av plattformen i Klusterhanteraren. Alla andra plattformsspecifika resurser är beroende av dem för sin livscykel.

Du bör skapa Nätverksinfrastrukturen före den här lokala distributionen. Varje lokal Operator Nexus-instans har en en-till-en-association med en Nätverksinfrastruktur.

Skapa klustret med Azure CLI:

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"

Parametrar för klusteråtgärder

Parameternamn beskrivning
CLUSTER_NAME Resursnamn för klustret
PLATS Den Azure-region där klustret distribueras
CL_NAME Den anpassade platsen för Klusterhanteraren från Azure Portal
CLUSTER_RG Namnet på klusterresursgruppen
LAW_ID Log Analytics-arbetsyte-ID för klustret
CLUSTER_LOCATION Klustrets lokala namn
AGGR_RACK_RESOURCE_ID RackID för Aggregator Rack
AGGR_RACK_SKU Rack-SKU för Aggregator Rack *Se Operator Nexus Network Cloud SKU:er
AGGR_RACK_SN Rackserienummer för Aggregator Rack
AGGR_RACK_LOCATION Rack fysisk plats för Aggregator Rack
AGGR_RACK_BMM Används endast för distribution av enkel rack, tom för flera rack
SA_NAME Enhetsnamn för lagringsenhet
SA_PASS Administratörslösenord för lagringsinstallation
SA_USER Administratörsanvändare för lagringsinstallation
SA_SN Serienummer för lagringsinstallation
COMPX_RACK_RESOURCE_ID RackID för CompX-rack; upprepa för varje rack i compute-rack-definitioner
COMPX_RACK_SKU Rack-SKU för CompX-rack; upprepa för varje rack i compute-rack-definitioner *Se Operator Nexus Network Cloud SKU:er
COMPX_RACK_SN Rackserienummer för CompX-rack; upprepa för varje rack i compute-rack-definitioner
COMPX_RACK_LOCATION Rack fysisk plats för CompX Rack; upprepa för varje rack i compute-rack-definitioner
COMPX_SVRY_BMC_PASS CompX Rack ServerY BMC-lösenord (Baseboard Management Controller). upprepa för varje rack i compute-rack-definitioner och för varje server i rack
COMPX_SVRY_BMC_USER CompX Rack ServerY BMC-användare; upprepa för varje rack i compute-rack-definitioner och för varje server i rack
COMPX_SVRY_BMC_MAC CompX Rack ServerY BMC MAC-adress; upprepa för varje rack i compute-rack-definitioner och för varje server i rack
COMPX_SVRY_BOOT_MAC Mac-adress för CompX Rack ServerY-startkort för nätverksgränssnitt (NIC). upprepa för varje rack i compute-rack-definitioner och för varje server i rack
COMPX_SVRY_SERVER_DETAILS Information om CompX-rackservery; upprepa för varje rack i compute-rack-definitioner och för varje server i rack
COMPX_SVRY_SERVER_NAME CompX Rack ServerY-namn; upprepa för varje rack i compute-rack-definitioner och för varje server i rack
MRG_NAME Namn på klusterhanterad resursgrupp
MRG_LOCATION Azure-klusterregion
NF_ID Referens till Nätverksinfrastruktur
SP_APP_ID App-ID för tjänstens huvudnamn
SP_PASS Lösenord för tjänstens huvudnamn
SP_ID Tjänstens huvudnamn-ID
TENANT_ID Prenumerationsklient-ID
SUBSCRIPTION_ID Prenumerations-ID:t
KV_RESOURCE_ID Key Vault-ID
CLUSTER_TYPE Typ av kluster, enkel eller MultiRack
CLUSTER_VERSION Nätverksmolnversion (NC) av kluster
TAG_KEY1 Valfri tagg1 som ska skickas till Skapa kluster
TAG_VALUE1 Valfritt tag1-värde som ska skickas till Klusterskapa
TAG_KEY2 Valfri tagg2 som ska skickas till Klusterskapa
TAG_VALUE2 Valfritt tag2-värde som ska skickas till Klusterskapa

Klusteridentitet

Från och med API-versionen 2024-07-01 kan en kund tilldela hanterad identitet till ett kluster. Både systemtilldelade och användartilldelade hanterade identiteter stöds.

Hanterad identitet kan tilldelas till klustret när du skapar eller uppdaterar åtgärder genom att ange följande parametrar:

  • --mi-system-assigned – Aktivera systemtilldelad hanterad identitet. När identiteten har lagts till kan den bara tas bort via API-anropet just nu.
  • --mi-user-assigned – Utrymmesavgränsade resurs-ID:n för de användartilldelade hanterade identiteter som ska läggas till. När identiteten har lagts till kan den bara tas bort via API-anropet just nu.

Skapa klustret med hjälp av Azure Resource Manager-mallredigeraren

Ett alternativt sätt att skapa ett kluster är med ARM-mallredigeraren.

För att kunna skapa klustret på det här sättet måste du ange en mallfil (cluster.jsonc) och en parameterfil (cluster.parameters.jsonc). Du hittar exempel för ett 8-Rack 2M16C SKU-kluster med hjälp av följande två filer:

cluster.jsonc , cluster.parameters.jsonc

Kommentar

Kopiera den råa kodfilen för att få rätt formatering. Värdena i filen cluster.parameters.jsonc är kundspecifika och är kanske inte en fullständig lista. Uppdatera värdefälten för din specifika miljö.

  1. Gå till Azure Portal i en webbläsare och logga in.
  2. Sök efter "Distribuera en anpassad mall" i sökfältet Azure Portal och välj den sedan från de tillgängliga tjänsterna.
  3. Klicka på Skapa en egen mall i redigeraren.
  4. Klicka på Läs in fil. Leta upp mallfilen cluster.jsonc och ladda upp den.
  5. Klicka på Spara.
  6. Klicka på Redigera parametrar.
  7. Klicka på Läs in fil. Leta upp parameterfilen cluster.parameters.jsonc och ladda upp den.
  8. Klicka på Spara.
  9. Välj rätt prenumeration.
  10. Sök efter resursgruppen för att se om den redan finns. Om inte skapar du en ny resursgrupp.
  11. Kontrollera att all instansinformation är korrekt.
  12. Klicka på Granska och skapa.

Klusterverifiering

En lyckad skapande av operatören Nexus-kluster resulterar i skapandet av en Azure-resurs i din prenumeration. Kluster-ID, klusteretableringstillstånd och distributionstillstånd returneras till följd av ett lyckat cluster create.

Visa status för klustret:

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

Klusterskapandet är klart när resursen provisioningState visar: "provisioningState": "Succeeded"

Klusterloggning

Klusterskapningsloggar kan visas på följande platser:

  1. Azure Portal resurs-/resursgruppsaktivitetsloggar.
  2. Azure CLI med --debug flagga som skickas på kommandoraden.

Distribuera kluster

Åtgärden distribuera kluster kan utlösas när klustret har skapats. Åtgärden distribuera kluster skapar bootstrap-avbildningen och distribuerar klustret.

Distribuera kluster initierar en sekvens med händelser som inträffar i Klusterhanteraren.

  1. Validering av egenskaperna för kluster/rack.
  2. Generering av en startbar avbildning för det tillfälliga bootstrap-klustret (validering av infrastruktur).
  3. Interaktion med IPMI-gränssnittet (Intelligent Platform Management Interface) för den riktade bootstrap-datorn.
  4. Utföra maskinvaruverifieringskontroller.
  5. Övervakning av klusterdistributionsprocessen.

Distribuera det lokala klustret:

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

Dricks

Om du vill kontrollera status för az networkcloud cluster deploy kommandot kan det köras med hjälp av --debug flaggan. På så sätt kan du hämta Azure-AsyncOperation rubriken eller Location som används för att fråga resursen operationStatuses . Mer detaljerade steg finns i avsnittet Klusterdistribution misslyckades . Du kan också köra kommandot asynkront med hjälp av --no-wait flaggan.

Klusterdistribution med maskinvaruverifiering

Under en klusterdistributionsprocess är ett av stegen som körs maskinvaruverifiering. Valideringsproceduren för maskinvara kör olika tester och kontroller mot de datorer som tillhandahålls via klustrets rackdefinition. Baserat på resultatet av dessa kontroller och alla datorer som användaren hoppades över görs en bedömning av om tillräckligt många noder har skickats och/eller är tillgängliga för att uppfylla de tröskelvärden som krävs för att distributionen ska fortsätta.

Viktigt!

Maskinvaruverifieringsprocessen skriver resultatet till det som angavs analyticsWorkspaceId vid skapande av kluster. Dessutom används det angivna tjänstens huvudnamn i klusterobjektet för autentisering mot Log Analytics-API:et för arbetsyteinsamling. Den här funktionen visas endast under en ny distribution (grönt fält); befintliga klustret kommer inte att ha loggarna tillgängliga retroaktivt.

Kommentar

RAID-kontrollanten återställs under klusterdistributionen och rensar alla data från serverns virtuella diskar. Alla aviseringar om baskortshanteringsstyrenhet (BMC) för virtuella diskar kan vanligtvis ignoreras om det inte finns ytterligare aviseringar om fysiska diskar och/eller RAID-styrenheter.

Som standard skriver maskinvaruverifieringsprocessen resultatet till det konfigurerade klustret analyticsWorkspaceId. På grund av typen av Log Analytics-datainsamling och schemautvärdering kan det dock uppstå inmatningsfördröjningar som kan ta flera minuter eller mer. Därför fortsätter klusterdistributionen även om det inte gick att skriva resultatet till Log Analytics-arbetsytan. För att åtgärda den här möjliga händelsen loggas även resultaten för redundans i Klusterhanteraren.

I det angivna klusterobjektets Log Analytics-arbetsyta ska en ny anpassad tabell med klustrets namn som prefix och suffixet *_CL visas. I avsnittet Loggar i LAW-resursen kan en fråga köras mot den nya *_CL tabellen Anpassad logg.

Klusterdistribution med hoppa över specifik bare metal-dator

Parametern --skip-validation-for-machines representerar namnen på datorer utan operativsystem i klustret som ska hoppas över under maskinvaruvalidering. Noder som hoppas över verifieras inte och läggs inte till i nodpoolen. Dessutom räknas inte överhoppade noder mot det totala antalet som används av tröskelvärdesberäkningar.

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

Klusterdistributionen misslyckades

Om du vill spåra status för en asynkron åtgärd kör du med en --debug flagga aktiverad. När --debug har angetts kan förloppet för begäran övervakas. Åtgärdens status-URL kan hittas genom att undersöka felsökningsutdata som Azure-AsyncOperation Location letar efter eller huvudet på HTTP-svaret på begäran om att skapa. Rubrikerna kan ange det OPERATION_ID fält som används i HTTP API-anropet.

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"

Utdata liknar JSON-struct-exemplet. När felkoden är HardwareValidationThresholdFailedinnehåller felmeddelandet en lista över datorer utan operativsystem som misslyckades med maskinvaruverifieringen (till exempel COMP0_SVR0_SERVER_NAME, COMP1_SVR1_SERVER_NAME). Dessa namn kan användas för att parsa loggarna för ytterligare information.

{
  "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"
}

I artikeln Spåra asynkrona åtgärder med Azure CLI finns ett annat exempel. Se artikeln Felsöka BMM-etablering för mer information som kan vara till hjälp när specifika datorer misslyckas med validering eller distribution.

Validering av klusterdistribution

Visa status för klustret på portalen eller via Azure CLI:

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

Klusterdistributionen pågår när detailedStatus är inställt på Deploying och detailedStatusMessage visar distributionens förlopp. Några exempel på distributionsförlopp som visas i detailedStatusMessage är Hardware validation is in progress. (om klustret distribueras med maskinvaruverifiering), Cluster is bootstrapping., KCP initialization in progress., Management plane deployment in progress., Cluster extension deployment in progress., waiting for "<rack-ids>" to be readyosv.

Skärmbild av Azure Portal som visar klusterdistributionens förlopp kcp init.

Skärmbild av Azure Portal som visar förloppstilläggsprogrammet för klusterdistribution.

Klusterdistributionen är klar när detailedStatus är inställt på Running och detailedStatusMessage visar meddelandet Cluster is up and running.

Skärmbild av Azure Portal som visar att klusterdistributionen är klar.

Visa hanteringsversionen av klustret:

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"

Loggning av klusterdistribution

Klusterskapningsloggar kan visas på följande platser:

  1. Azure Portal resurs-/resursgruppsaktivitetsloggar.
  2. Azure CLI med --debug flagga som skickas på kommandoraden.

Skärmbild av Azure Portal som visar förloppsaktivitetsloggen för klusterdistribution.

Uppdatera klusteridentiteter via API:er

Klusterhanterade identiteter kan tilldelas via CLI. Avtilldelningen av identiteterna kan göras via API-anrop. <APIVersion> Obs! är API-versionen 2024-07-01 eller senare.

  • Om du vill ta bort alla hanterade identiteter kör du:

    az rest --method PATCH --url /subscriptions/$SUB_ID/resourceGroups/$CLUSTER_RG/providers/Microsoft.NetworkCloud/clusters/$CLUSTER_NAME?api-version=<APIVersion> --body "{\"identity\":{\"type\":\"None\"}}"
    
  • Om både Användartilldelade och Systemtilldelade hanterade identiteter har lagts till kan den användartilldelade tas bort genom att uppdatera type till SystemAssigned:

    az rest --method PATCH --url /subscriptions/$SUB_ID/resourceGroups/$CLUSTER_RG/providers/Microsoft.NetworkCloud/clusters/$CLUSTER_NAME?api-version=<APIVersion> --body @~/uai-body.json
    

    Exempel på begärandetext (uai-body.json):

    {
      "identity": {
          "type": "SystemAssigned"
      }
    }
    
  • Om både användartilldelade och systemtilldelade hanterade identiteter har lagts till kan systemtilldelade tas bort genom att uppdatera type till UserAssigned:

    az rest --method PATCH --url /subscriptions/$SUB_ID/resourceGroups/$CLUSTER_RG/providers/Microsoft.NetworkCloud/clusters/$CLUSTER_NAME?api-version=<APIVersion> --body @~/uai-body.json
    

    Exempel på begärandetext (uai-body.json):

    {
      "identity": {
          "type": "UserAssigned",
      	"userAssignedIdentities": {
      		"/subscriptions/$SUB_ID/resourceGroups/$UAI_RESOURCE_GROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$UAI_NAME": {}
      	}
      }
    }
    
  • Om flera användartilldelade hanterade identiteter har lagts till kan en av dem tas bort genom att köra:

    az rest --method PATCH --url /subscriptions/$SUB_ID/resourceGroups/$CLUSTER_RG/providers/Microsoft.NetworkCloud/clusters/$CLUSTER_NAME?api-version=<APIVersion> --body @~/uai-body.json
    

    Exempel på begärandetext (uai-body.json):

    {
      "identity": {
          "type": "UserAssigned",
      	"userAssignedIdentities": {
      		"/subscriptions/$SUB_ID/resourceGroups/$UAI_RESOURCE_GROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$UAI_NAME": null
      	}
      }
    }
    

Ta bort ett kluster

När du tar bort ett kluster tas resurserna i Azure bort och klustret som finns i den lokala miljön.

Kommentar

Om det finns några klientresurser i klustret tas de inte bort förrän resurserna har tagits bort.

Skärmbild av portalen som visar att det inte gick att ta bort på grund av klientresurser.

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