Tworzenie i aprowizuj klaster przy użyciu interfejsu wiersza polecenia platformy Azure

W tym artykule opisano sposób tworzenia klastra przy użyciu interfejsu wiersza polecenia platformy Azure (AzCLI). W tym dokumencie pokazano również, jak sprawdzić stan, aktualizację lub usunąć klaster.

Wymagania wstępne

  • Sprawdź, czy kontroler sieci szkieletowej i menedżer klastra istnieją w regionie świadczenia usługi Azure
  • Sprawdź, czy sieć szkieletowa sieci szkieletowej została pomyślnie aprowizowana

Przewodnik i metryki interfejsu API

Przewodnik po interfejsie API zawiera informacje na temat dostawców zasobów i modeli zasobów oraz interfejsów API.

Metryki wygenerowane na podstawie danych rejestrowania są dostępne w metrykach usługi Azure Monitor.

Tworzenie klastra

Zasób klastra infrastruktury reprezentuje lokalne wdrożenie platformy w Menedżerze klastra. Wszystkie inne zasoby specyficzne dla platformy są zależne od niego na potrzeby ich cyklu życia.

Sieć szkieletowa sieci szkieletowej powinna zostać pomyślnie utworzona dla tego wdrożenia lokalnego. Każde wystąpienie lokalne Operatora Nexus ma jedno do jednego skojarzenia z siecią szkieletową sieci szkieletowej.

Utwórz klaster:

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" \
  --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"

Zamiast tego można utworzyć klaster z plikami szablonów/parametrów usługi ARM w Edytorze szablonów usługi ARM:

Parametry dla operacji klastra

Nazwa parametru opis
CLUSTER_NAME Nazwa zasobu klastra
LOKALIZACJA Region świadczenia usługi Azure, w którym wdrożono klaster
CL_NAME Lokalizacja niestandardowa Menedżera klastra w witrynie Azure Portal
CLUSTER_RG Nazwa grupy zasobów klastra
LAW_ID Identyfikator obszaru roboczego usługi Log Analytics dla klastra
CLUSTER_LOCATION Lokalna nazwa klastra
AGGR_RACK_RESOURCE_ID RackID dla stojaka agregatora
AGGR_RACK_SKU Jednostka SKU stojaka dla stojaka agregatora
AGGR_RACK_SN Numer seryjny stojaka dla stojaka agregatora
AGGR_RACK_LOCATION Lokalizacja fizyczna stojaka dla stojaka agregatora
AGGR_RACK_BMM Używane tylko do wdrażania w jednym stojaku, puste dla wielu stojaków
SA_NAME Nazwa urządzenia magazynu
SA_PASS Hasło administratora urządzenia magazynu
SA_USER Administrator urządzenia magazynu
SA_SN Numer seryjny urządzenia magazynu
COMPX_RACK_RESOURCE_ID RackID dla regałów CompX, powtarzaj dla każdego stojaka w definicjach compute-rack
COMPX_RACK_SKU Jednostka SKU stojaka dla regałów CompX, powtarzana dla każdego stojaka w definicjach regałów obliczeniowych
COMPX_RACK_SN Numer seryjny stojaka dla regałów CompX, powtarzaj dla każdego stojaka w definicjach regałów obliczeniowych
COMPX_RACK_LOCATION Fizyczna lokalizacja regałów CompX Rack powtarzana dla każdego stojaka w definicjach regałów obliczeniowych
COMPX_SVRY_BMC_PASS CompX Rack ServerY BMC hasło, powtórz dla każdego stojaka w definicjach compute-rack i dla każdego serwera w stojaku
COMPX_SVRY_BMC_USER CompX Rack ServerY BMC użytkownika, powtórz dla każdego stojaka w definicjach obliczeniowych stojaków i dla każdego serwera w stojaku
COMPX_SVRY_BMC_MAC CompX Rack ServerY adres MAC BMC, powtórz dla każdego stojaka w definicjach stojaków obliczeniowych i dla każdego serwera w stojaku
COMPX_SVRY_BOOT_MAC CompX Rack ServerY adres MAC karty sieciowej rozruchu, powtórz dla każdego stojaka w definicjach compute-rack i dla każdego serwera w stojaku
COMPX_SVRY_SERVER_DETAILS Szczegóły compX Rack ServerY, powtarzaj dla każdego stojaka w definicjach obliczeniowych stojaków i dla każdego serwera w stojaku
COMPX_SVRY_SERVER_NAME Nazwa CompX Rack ServerY powtórz dla każdego stojaka w definicjach regałów obliczeniowych i dla każdego serwera w stojaku
MRG_NAME Nazwa zarządzanej grupy zasobów klastra
MRG_LOCATION Region klastra platformy Azure
NFC_ID Odwołanie do kontrolera sieci szkieletowej sieci szkieletowej
SP_APP_ID Identyfikator aplikacji jednostki usługi
SP_PASS Hasło jednostki usługi
SP_ID Identyfikator jednostki usługi
TENANT_ID Identyfikator dzierżawy subskrypcji
KV_RESOURCE_ID Identyfikator usługi Key Vault
CLUSTER_TYPE Typ klastra, pojedynczego lub wielorackowego
CLUSTER_VERSION Wersja klastra NC
TAG_KEY1 Opcjonalny tag1 do przekazania do tworzenia klastra
TAG_VALUE1 Opcjonalna wartość tag1 do przekazania do tworzenia klastra
TAG_KEY2 Opcjonalny tag2 do przekazania do tworzenia klastra
TAG_VALUE2 Opcjonalna wartość tag2 do przekazania do tworzenia klastra

Walidacja klastra

Pomyślne utworzenie klastra Operator Nexus powoduje utworzenie klastra usługi AKS w ramach subskrypcji. Identyfikator klastra, stan aprowizacji klastra i stan wdrożenia są zwracane w wyniku pomyślnego działania cluster create.

Wyświetl stan klastra:

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

Tworzenie klastra zostanie ukończone po provisioningState wyświetleniu elementu zasobu: "provisioningState": "Succeeded"

Rejestrowanie klastra

Dzienniki tworzenia klastra można wyświetlić w następujących lokalizacjach:

  1. Dzienniki aktywności zasobu/grupy zasobów w witrynie Azure Portal.
  2. Interfejs wiersza polecenia platformy Azure z flagą --debug przekazaną w wierszu polecenia.

Wdrażanie klastra

Po utworzeniu klastra można wyzwolić akcję wdrożenia klastra. Akcja wdróż klaster tworzy obraz bootstrap i wdraża klaster.

Wdrażanie klastra inicjuje sekwencję zdarzeń, które mają wystąpić w Menedżerze klastra

  1. Sprawdzanie poprawności właściwości klastra/stojaka
  2. Generowanie obrazu rozruchowego dla efemerycznego klastra rozruchowego (walidacja infrastruktury).
  3. Interakcja z interfejsem IPMI docelowej maszyny rozruchowej.
  4. Przeprowadzanie testów weryfikacji sprzętu
  5. Monitorowanie procesu wdrażania klastra.

Wdróż klaster lokalny:

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

Napiwek

Aby sprawdzić stan az networkcloud cluster deploy polecenia, można go wykonać przy użyciu flagi --debug . Umożliwi to uzyskanie nagłówka lub używanego Azure-AsyncOperation do wykonywania zapytań dotyczących operationStatuses zasobu.Location Zobacz sekcję Wdrażanie klastra nie powiodło się , aby uzyskać bardziej szczegółowe instrukcje. Opcjonalnie polecenie może być uruchamiane asynchronicznie przy użyciu flagi --no-wait .

Wdrażanie klastra przy użyciu weryfikacji sprzętu

Podczas procesu wdrażania klastra jednym z wykonanych kroków jest weryfikacja sprzętu. Procedura sprawdzania poprawności sprzętu uruchamia różne testy i sprawdza maszyny dostarczone za pomocą definicji stojaka klastra. Na podstawie wyników tych testów i wszystkich pominiętych maszyn przez użytkownika należy określić, czy są dostępne wystarczające węzły przekazywane i/lub są dostępne, aby spełnić progi niezbędne do kontynuowania wdrażania.

Ważne

Proces weryfikacji sprzętu zapisze wyniki określone w analyticsWorkspaceId sekcji Tworzenie klastra. Ponadto podana jednostka usługi w obiekcie klastra jest używana do uwierzytelniania w interfejsie API zbierania danych obszaru roboczego usługi Log Analytics. Ta funkcja jest widoczna tylko podczas nowego wdrożenia (Green Field); istniejący klaster nie będzie miał dostępnych dzienników z mocą wsteczną.

Domyślnie proces sprawdzania poprawności sprzętu zapisuje wyniki w skonfigurowanym klastrze analyticsWorkspaceId. Jednak ze względu na charakter zbierania danych obszaru roboczego usługi Log Analytics i oceny schematu może wystąpić opóźnienie pozyskiwania, które może potrwać kilka minut lub więcej. Z tego powodu wdrożenie klastra przebiega nawet wtedy, gdy nie udało się zapisać wyników w obszarze roboczym usługi Log Analytics. Aby ułatwić rozwiązanie tego możliwego zdarzenia, wyniki dla nadmiarowości są również rejestrowane w Menedżerze klastra.

W udostępnionym obszarze roboczym usługi Log Analytics obiektu klastra powinna zostać wyświetlona nowa tabela niestandardowa z nazwą klastra jako prefiksem i sufiksem *_CL . W sekcji Dzienniki zasobu LAW można wykonać zapytanie względem nowej *_CL tabeli dzienników niestandardowych.

Akcja wdrażania klastra z pominięciem określonej maszyny bez systemu operacyjnego

Parametr można przekazać do polecenia deploy, które reprezentuje nazwy maszyn bez systemu operacyjnego w klastrze, które powinny zostać pominięte podczas walidacji sprzętu. Pominięte węzły nie są weryfikowane i nie są dodawane do puli węzłów. Ponadto węzły pominięte nie są liczone względem sumy używanej przez obliczenia progowe.

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

Wdrażanie klastra nie powiodło się

Aby śledzić stan operacji asynchronicznej, uruchom polecenie z włączoną flagą --debug . Po --debug określeniu można monitorować postęp żądania. Adres URL stanu operacji można znaleźć, sprawdzając dane wyjściowe debugowania, Azure-AsyncOperation wyszukując nagłówek lub Location w odpowiedzi HTTP na żądanie utworzenia. Nagłówki mogą podać OPERATION_ID pole używane w wywołaniu interfejsu 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"

Dane wyjściowe są podobne do przykładu struktury JSON. Gdy kod błędu to HardwareValidationThresholdFailed, komunikat o błędzie zawiera listę maszyn bez systemu operacyjnego, które zakończyły się niepowodzeniem weryfikacji sprzętu (na przykład COMP0_SVR0_SERVER_NAME, COMP1_SVR1_SERVER_NAME). Te nazwy mogą służyć do analizowania dzienników, aby uzyskać więcej szczegółów.

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

Zobacz artykuł Śledzenie operacji asynchronicznych przy użyciu interfejsu wiersza polecenia platformy Azure, aby zapoznać się z innym przykładem.

Walidacja wdrożenia klastra

Wyświetl stan klastra w portalu lub za pośrednictwem interfejsu wiersza polecenia platformy Azure:

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

Wdrożenie klastra jest w toku, gdy parametr detailedStatus jest ustawiony na Deploying i szczegółoweStatusMessage pokazuje postęp wdrażania. Niektóre przykłady postępu wdrażania pokazane w szczegółowymStatusMessage to Hardware validation is in progress. (jeśli klaster jest wdrożony z weryfikacją sprzętu) ,Cluster is bootstrapping.KCP initialization in progress. , , Management plane deployment in progress., Cluster extension deployment in progress., itpwaiting for "<rack-ids>" to be ready.

Zrzut ekranu witryny Azure Portal przedstawiający postęp wdrażania klastra kcp init.

Zrzut ekranu witryny Azure Portal przedstawiający aplikację rozszerzenia postępu wdrażania klastra.

Wdrożenie klastra zostało ukończone, gdy parametr detailedStatus jest ustawiony na Running , a element detailedStatusMessage wyświetla komunikat Cluster is up and running.

Zrzut ekranu witryny Azure Portal przedstawiający ukończone wdrażanie klastra.

Wyświetl wersję zarządzania klastra:

az k8s-extension list --cluster-name <cluster> --resource-group "$MANAGED_CLUSTER_RG" --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"

Rejestrowanie wdrożenia klastra

Dzienniki tworzenia klastra można wyświetlić w następujących lokalizacjach:

  1. Dzienniki aktywności zasobu/grupy zasobów w witrynie Azure Portal.
  2. Interfejs wiersza polecenia platformy Azure z flagą --debug przekazaną w wierszu polecenia.

Zrzut ekranu witryny Azure Portal przedstawiający dziennik aktywności wdrażania klastra.