Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przygotowana specyfikacja obrazu (PIS) umożliwia definiowanie wstępnie skonfigurowanych obrazów węzłów zawierających wymagane obrazy kontenerów i dostosowania. Usługa AKS kompiluje przygotowany obraz raz i ponownie używa go podczas aprowizacji węzła, co skraca czas uruchamiania dla kolejnych operacji skalowania. Aby uzyskać więcej informacji na temat sposobu działania przygotowanej specyfikacji obrazu i sposobu jej używania, zobacz Przygotowana specyfikacja obrazu w usłudze AKS (wersja zapoznawcza).
W tym artykule opisano, jak utworzyć PIS i zarządzać nim w usłudze AKS.
Important
Funkcje usługi AKS w wersji zapoznawczej są dostępne na zasadzie samoobsługi i wymagają zapisania się. Wersje zapoznawcze są udostępniane w wersji "as is" i "jako dostępne" i są wykluczone z umów dotyczących poziomu usług i ograniczonej gwarancji. Wersje zapoznawcze usługi AKS są częściowo objęte pomocą techniczną dla klientów, świadczoną w miarę możliwości. W związku z tym te funkcje nie są przeznaczone do użytku produkcyjnego. Aby uzyskać więcej informacji, zobacz następujące artykuły pomocy technicznej:
Wymagania wstępne
- Istniejący klaster usługi AKS z obsługiwaną wersją rozwiązania Kubernetes. Jeśli go nie masz, zobacz Utwórz klaster AKS.
- Azure CLI w wersji 2.85.0 lub nowszej. Uruchom polecenie
az --version, aby znaleźć swoją wersję. Jeśli musisz zainstalować lub uaktualnić, zobacz Install Azure CLI. - Potrzebujesz odpowiednich uprawnień Azure RBAC do tworzenia zasobów AKS i zarządzania nimi w swojej grupie zasobów.
- Obrazy kontenerów muszą być dostępne dla klastra AKS. Jeśli używasz usługi Azure Container Registry (ACR), upewnij się, że jest ona zintegrowana z klastrem usługi AKS.
- Rozszerzenie
aks-previewinterfejsu wiersza polecenia w wersji 21.0.0b5 lub nowszej. Jeśli go nie masz, zapoznaj się z tematem Instalowanie rozszerzeniaaks-previewCLI. - Flaga funkcji
AKSPreparedImageSpecificationPreviewzarejestrowana w Twojej subskrypcji. Jeśli flaga nie została jeszcze zarejestrowana, zobacz temat Zarejestruj flagęAKSPreparedImageSpecificationPreviewfunkcji.
Limitations
W wersji zapoznawczej obowiązują następujące ograniczenia:
- Dostępne w publicznych regionach platformy Azure, z wyjątkiem chmur suwerennych i środowisk odizolowanych od sieci.
- Obsługiwane systemy operacyjne to Ubuntu, Azure Linux i Windows.
- Skrypty niestandardowe mogą powodować błędy kompilacji obrazu lub skalowania w górę.
- Może być konieczne ponowne utworzenie istniejących specyfikacji podczas ich modyfikowania.
Zainstaluj rozszerzenie CLI aks-preview
Zainstaluj rozszerzenie interfejsu wiersza polecenia aks-preview za pomocą polecenia az extension add.
az extension add --name aks-preview
Zaktualizuj rozszerzenie, aby upewnić się, że masz zainstalowaną najnowszą wersję przy użyciu az extension update polecenia .
az extension update --name aks-preview
Zarejestruj flagę funkcji AKSPreparedImageSpecificationPreview
Zarejestruj flagę funkcji
AKSPreparedImageSpecificationPrevieww subskrypcji przy użyciu poleceniaaz feature register.az feature register \ --namespace Microsoft.ContainerService \ --name AKSPreparedImageSpecificationPreviewSprawdź stan rejestracji przy użyciu
az feature showpolecenia .az feature show \ --namespace Microsoft.ContainerService \ --name AKSPreparedImageSpecificationPreviewPo zarejestrowaniu flagi funkcji odśwież rejestrację dostawcy zasobów Microsoft.ContainerService za pomocą polecenia
az provider register.az provider register --namespace Microsoft.ContainerService
Tworzenie przygotowanej specyfikacji obrazu (PIS)
Tworzenie podstawowej przygotowanej specyfikacji obrazu
Utwórz PIS za pomocą polecenia az aks prepared-image-specification create.
# Set environment variables
RESOURCE_GROUP=<your-resource-group>
CLUSTER_NAME=<your-aks-cluster-name>
PIS_NAME=<your-pis-name>
LOCATION=<location>
PIS_VERSION=v1
# Create a basic Prepared Image Specification
az aks prepared-image-specification create \
--resource-group $RESOURCE_GROUP \
--name $PIS_NAME \
--version $PIS_VERSION \
--location $LOCATION
Tworzenie przygotowanej specyfikacji obrazu z buforowanych obrazów
Utwórz środowisko PIS, które wstępnie buforuje obrazy kontenerów przy użyciu az aks prepared-image-specification create polecenia .
# Set environment variables
RESOURCE_GROUP=<your-resource-group>
CLUSTER_NAME=<your-aks-cluster-name>
PIS_NAME=<your-pis-name>
LOCATION=<location>
PIS_VERSION=v1
# Create a Prepared Image Specification with cached images
az aks prepared-image-specification create \
--resource-group $RESOURCE_GROUP \
--name $PIS_NAME \
--version $PIS_VERSION \
--container-images \
myacr.azurecr.io/model-server:v1 \
myacr.azurecr.io/inference:v1
Tworzenie przygotowanej specyfikacji obrazu przy użyciu skryptów niestandardowych
Utwórz kod PIS, który uruchamia skrypty dostosowywania podczas kompilacji obrazu przy użyciu az aks prepared-image-specification create polecenia .
# Set environment variables
RESOURCE_GROUP=<your-resource-group>
CLUSTER_NAME=<your-aks-cluster-name>
PIS_NAME=<your-pis-name>
LOCATION=<location>
PIS_VERSION=v1
# Create a Prepared Image Specification using custom scripts
az aks prepared-image-specification create \
--resource-group $RESOURCE_GROUP \
--name $PIS_NAME \
--version $PIS_VERSION \
--customization-scripts @scripts.json
Tworzenie klastra lub puli węzłów przy użyciu przygotowanej specyfikacji obrazu
Po utworzeniu PIS możesz się do niego odwoływać podczas tworzenia lub aktualizowania klastra lub puli węzłów. Potrzebny jest identyfikator zasobu przygotowanej wersji obrazu.
Utwórz klaster za pomocą PIS
Pobierz identyfikator zasobu wersji PIS za pomocą polecenia
az aks prepared-image-specification version show.# Set environment variables RESOURCE_GROUP=<your-resource-group> PIS_NAME=<your-pis-name> PIS_VERSION=v1 # Get the PIS version resource ID PIS_VERSION_ID=$(az aks prepared-image-specification version show \ --resource-group $RESOURCE_GROUP \ --pis-name $PIS_NAME \ --name $PIS_VERSION \ --query id -o tsv)Utwórz nowy klaster AKS, który odwołuje się do przygotowanego obrazu za pomocą polecenia
az aks createz parametrem--prepared-image-specification-id.# Set environment variables CLUSTER_NAME=<your-aks-cluster-name> # Create a new AKS cluster using the prepared image az aks create \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAME \ --prepared-image-specification-id $PIS_VERSION_ID \ --generate-ssh-keys
Utwórz pulę węzłów za pomocą PIS
Pobierz identyfikator zasobu wersji PIS za pomocą polecenia
az aks prepared-image-specification version show.# Set environment variables RESOURCE_GROUP=<your-resource-group> PIS_NAME=<your-pis-name> PIS_VERSION=v1 # Get the PIS version resource ID PIS_VERSION_ID=$(az aks prepared-image-specification version show \ --resource-group $RESOURCE_GROUP \ --pis-name $PIS_NAME \ --name $PIS_VERSION \ --query id -o tsv)Utwórz nową pulę węzłów, która odwołuje się do przygotowanego obrazu za pomocą polecenia
az aks nodepool addz parametrem--prepared-image-specification-id.# Set environment variables CLUSTER_NAME=<your-aks-cluster-name> # Create a new node pool using the prepared image az aks nodepool add \ --resource-group $RESOURCE_GROUP \ --cluster-name $CLUSTER_NAME \ --name userpool \ --prepared-image-specification-id $PIS_VERSION_IDSprawdź, czy pula węzłów używa języka PIS przy użyciu
az aks nodepool showpolecenia .az aks nodepool show \ --resource-group $RESOURCE_GROUP \ --cluster-name $CLUSTER_NAME \ --name userpool \ --query "{state:provisioningState, pisId:preparedImageSpecificationId}"
Zarządzanie przygotowanymi specyfikacjami obrazów
Lista przygotowanych specyfikacji obrazów
Wyświetl listę wszystkich specyfikacji przygotowanych obrazów w grupie zasobów za pomocą polecenia az aks prepared-image-specification list.
# Set environment variables
RESOURCE_GROUP=<your-resource-group>
# List all Prepared Image Specifications in the resource group
az aks prepared-image-specification list --resource-group $RESOURCE_GROUP
Pokaż określoną specyfikację przygotowanego obrazu
Uzyskaj szczegółowe informacje o określonej przygotowanej specyfikacji obrazu przy użyciu az aks prepared-image-specification show polecenia .
# Set environment variables
RESOURCE_GROUP=<your-resource-group>
PIS_NAME=<your-pis-name>
# Show the details of the Prepared Image Specification
az aks prepared-image-specification show \
--resource-group $RESOURCE_GROUP \
--name $PIS_NAME
Aktualizowanie metadanych przygotowanej specyfikacji obrazu
Istnieją dwie koncepcje zasobów: zasób PIS i wersje PIS. Aktualizowanie metadanych PIS, takich jak tagi, aktualizuje zasób PIS i nie zmienia obrazu ani skryptów wersji, do których odwołuje się odwołanie. Aby zmienić obrazy kontenerów lub skrypty, utwórz nową wersję PIS i zaktualizuj pulę węzłów tak, aby odwoływała się do identyfikatora tej wersji PIS.
Metadane, takie jak tagi, można zaktualizować przy użyciu istniejącej przygotowanej specyfikacji obrazu za pomocą az aks prepared-image-specification update polecenia . Aby zmienić obrazy kontenerów lub skrypty, utwórz nową wersję.
# Set environment variables
RESOURCE_GROUP=<your-resource-group>
PIS_NAME=<your-pis-name>
# Update the Prepared Image Specification metadata
az aks prepared-image-specification update \
--resource-group $RESOURCE_GROUP \
--name $PIS_NAME \
--tags environment=prod
Wyświetlanie listy wszystkich wersji przygotowanej specyfikacji obrazu
Wyświetl listę wszystkich wersji przygotowanej specyfikacji obrazu przy użyciu az aks prepared-image-specification version list polecenia .
# Set environment variables
RESOURCE_GROUP=<your-resource-group>
PIS_NAME=<your-pis-name>
# List all versions of the Prepared Image Specification
az aks prepared-image-specification version list \
--resource-group $RESOURCE_GROUP \
--pis-name $PIS_NAME
Pokaż określoną wersję przygotowanej specyfikacji obrazu
Uzyskaj szczegółowe informacje o określonej wersji przy użyciu az aks prepared-image-specification version show polecenia z parametrem --name ustawionym na wersję PIS.
# Set environment variables
RESOURCE_GROUP=<your-resource-group>
PIS_NAME=<your-pis-name>
PIS_VERSION=v1
# Show the details of the specific version of the Prepared Image Specification
az aks prepared-image-specification version show \
--resource-group $RESOURCE_GROUP \
--pis-name $PIS_NAME \
--name $PIS_VERSION
Wyświetl pule węzłów korzystające z określonej specyfikacji przygotowanego obrazu
Aby znaleźć wszystkie pule węzłów w klastrze, które odwołują się do specyfikacji Prepared Image Specification, użyj polecenia az aks nodepool list z filtrem JMESPath.
# Set environment variables
RESOURCE_GROUP=<your-resource-group>
CLUSTER_NAME=<your-aks-cluster-name>
# List all node pools in the cluster that reference a Prepared Image Specification
az aks nodepool list \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--query "[?preparedImageSpecificationId != null]"
Uaktualnianie przygotowanej wersji specyfikacji obrazu
Gdy obrazy bazowe, zależności lub dostosowania ulegną zmianie, utwórz nową wersję i zaktualizuj pule węzłów, tak aby odwoływały się do niej. Zalecany przepływ pracy to:
Utwórz nową wersję ze zaktualizowanymi obrazami kontenerów lub skryptami.
Zweryfikuj nową wersję w puli węzłów nieprodukcyjnych.
Zaktualizuj pule węzłów produkcyjnych, aby odwoływać się do nowej wersji.
# Set environment variables RESOURCE_GROUP=<your-resource-group> CLUSTER_NAME=<your-aks-cluster-name> NEW_PIS_VERSION_ID=<new-pis-version-resource-id> # Update a node pool to reference a new PIS version using the `az aks nodepool update` command az aks nodepool update \ --resource-group $RESOURCE_GROUP \ --cluster-name $CLUSTER_NAME \ --name userpool \ --prepared-image-specification-id $NEW_PIS_VERSION_IDWyczyść nieużywane obrazy na potrzeby optymalizacji kosztów.
Uaktualnienia wersji usługi AKS
Gdy uaktualnisz wersję platformy Kubernetes, usługa AKS automatycznie ponownie utworzy wstępnie przygotowany obraz VHD dla wskazanej wersji PIS. Nie musisz tworzyć nowej wersji PIS na potrzeby aktualizacji wersji Kubernetes. Należy utworzyć nową wersję PIS, gdy zawartość pakietu PIS, taka jak obrazy kontenerowe lub skrypty, ulegnie zmianie.
Sprawdź dostępne uaktualnienia przy użyciu az aks get-upgrades polecenia .
# Set environment variables
RESOURCE_GROUP=<your-resource-group>
CLUSTER_NAME=<your-aks-cluster-name>
# Check for available upgrades
az aks get-upgrades \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME
Uaktualnij klaster przy użyciu az aks upgrade polecenia .
# Set environment variables
RESOURCE_GROUP=<your-resource-group>
CLUSTER_NAME=<your-aks-cluster-name>
KUBERNETES_VERSION=<new-kubernetes-version>
# Upgrade the cluster to the new Kubernetes version
az aks upgrade \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--kubernetes-version $KUBERNETES_VERSION
Important
Utwórz i zweryfikuj nową wersję specyfikacji przygotowanego obrazu, ukierunkowaną na nowe wersje obrazów Kubernetes i obrazów węzłów, przed przeprowadzeniem aktualizacji produkcyjnych pul węzłów.
Uaktualnij określoną pulę węzłów przy użyciu az aks nodepool upgrade polecenia .
# Set environment variables
RESOURCE_GROUP=<your-resource-group>
CLUSTER_NAME=<your-aks-cluster-name>
NODE_POOL_NAME=<your-node-pool-name>
# Upgrade the node pool to the new Kubernetes version
az aks nodepool upgrade \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NODE_POOL_NAME
Usuwanie przygotowanej specyfikacji obrazu z puli węzłów
Aby przestać używać specyfikacji przygotowanego obrazu w puli węzłów, zaktualizuj pulę węzłów za pomocą polecenia az aks nodepool update, ustawiając parametr --prepared-image-specification-id na pusty ciąg.
# Set environment variables
RESOURCE_GROUP=<your-resource-group>
CLUSTER_NAME=<your-aks-cluster-name>
# Remove the Prepared Image Specification from the node pool
az aks nodepool update \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name userpool \
--prepared-image-specification-id ""
Usuwanie przygotowanej wersji specyfikacji obrazu
Usuń określoną wersję przy użyciu az aks prepared-image-specification version delete polecenia .
Important
Nie usuwaj wersji PIS, której używa pula węzłów. Zamiast tego należy zaktualizować pulę węzłów, aby usunąć z niej PIS lub odwoływać się do innej wersji PIS. Usunięcie przywoływałej wersji może uniemożliwić usłudze AKS pomyślne ponowne kompilowanie lub stopniowe przygotowywanie obrazu.
# Set environment variables
RESOURCE_GROUP=<your-resource-group>
PIS_NAME=<your-pis-name>
PIS_VERSION=<your-pis-version>
# Delete the specific version of the Prepared Image Specification
az aks prepared-image-specification version delete \
--resource-group $RESOURCE_GROUP \
--pis-name $PIS_NAME \
--name $PIS_VERSION
Usuwanie przygotowanej specyfikacji obrazu
Usuń cały zasób przygotowanej specyfikacji obrazu przy użyciu az aks prepared-image-specification delete polecenia .
Important
Przed usunięciem zasobu PIS upewnij się, że żadna z pul węzłów nie odwołuje się do żadnej z jego wersji. Jeśli znajdziesz odwołania, usuń je lub zaktualizuj przed usunięciem zasobu PIS. Usunięcie odwołania do PIS może uniemożliwić usłudze AKS pomyślne ponowne utworzenie lub wdrożenie przygotowanego obrazu.
# Set environment variables
RESOURCE_GROUP=<your-resource-group>
PIS_NAME=<your-pis-name>
# Delete the Prepared Image Specification
az aks prepared-image-specification delete \
--resource-group $RESOURCE_GROUP \
--name $PIS_NAME
Monitorowanie wydajności przygotowanej specyfikacji obrazu
Aby ocenić, czy PIS zmniejsza opóźnienia aprowizacji w Twoim środowisku, monitoruj następujące wskaźniki:
- Czas aprowizacji węzła i czas gotowości: porównaj z węzłami, które nie używają przygotowanego obrazu.
- Czas zakończenia skalowania w poziomie: czas od wyzwolenia autoskalera do momentu, gdy węzły osiągną stan Gotowe.
- Czas tworzenia obrazu i wskaźnik powodzenia tworzenia obrazu: Śledź stan potoku przygotowania obrazu.
- Czas uruchamiania zasobnika i czas pobierania obrazu kontenera: Sprawdź, czy wstępne buforowanie obrazów jest skutecznie wykorzystywane.
Rozwiązywanie problemów ze przygotowaną specyfikacją obrazu
Błędy związane z PIS powinny zawierać przyczynę niepowodzenia, a wiele niepowodzeń prawdopodobnie wynika z niestandardowych skryptów. Jeśli tworzenie puli węzłów lub jej skalowanie kończy się niepowodzeniem po dodaniu PIS, należy sprawdzić dzienniki tworzenia obrazu/niestandardowego skryptu i zweryfikować skrypt przed utworzeniem nowej wersji lub zaktualizowaniem odniesienia do puli węzłów.
Tworzenie obrazu kończy się niepowodzeniem
Uwaga / Notatka
Gdy skrypt dostosowywania zakończy się niepowodzeniem podczas kompilacji obrazu, usługa AKS cofnie przydział maszyny wirtualnej kompilacji zamiast go usunąć, aby klient mógł go uruchomić i debugować. Podczas kolejnych przebudowań PIS usługa AKS usuwa i ponownie tworzy zestaw skalowania maszyn wirtualnych oraz zasoby kompilacji.
Jeśli system PIS nie może utworzyć przygotowanego obrazu, sprawdź:
- Nieprawidłowe lub źle sformułowane skrypty dostosowywania.
- Błędy uwierzytelniania w rejestrze kontenerów — sprawdź, czy klaster AKS ma uprawnienia do pobierania z wskazanych rejestrów.
- Brak uprawnień RBAC platformy Azure do grupy zasobów lub rejestru.
- Nieobsługiwane typy dostosowywania dla docelowego systemu operacyjnego.
Tworzenie puli węzłów kończy się niepowodzeniem
Jeśli nie uda się utworzyć puli węzłów odwołującej się do PIS, sprawdź:
- Identyfikator wersji PIS jest prawidłowy i wersja istnieje w tym samym regionie.
- Twoja subskrypcja ma wystarczający limit dla żądanego SKU maszyny wirtualnej.
- Żądany typ SKU maszyny wirtualnej jest obsługiwany przez przygotowany obraz.
- Ten region obsługuje funkcję PIS w ramach wersji zapoznawczej.
Operacje skalowania nie są szybsze
Jeśli nie widzisz skrócenia czasu aprowizacji, sprawdź:
- Obrazy kontenerów, które chcesz przyspieszyć, są uwzględniane w wersji PIS.
- Pula węzłów odwołuje się do poprawnej wersji.
- Nowe węzły są uruchamiane przy użyciu przygotowanego obrazu, a nie podstawowego obrazu węzła AKS.
- Wąskie gardło to czas pobierania obrazu kontenera, a nie uruchamianie obciążenia roboczego ani inne etapy inicjalizacji.
Uprzątnij zasoby
Jeśli zasoby zostały utworzone w tym artykule na potrzeby testowania, usuń je po zakończeniu, aby uniknąć bieżących opłat. Obejmuje to wersje PIS, zasoby PIS, testowe pule węzłów i testowe klastry AKS.
Aby usunąć grupę zasobów i wszystkie zasoby w niej, użyj az group delete polecenia .
# Set environment variables
RESOURCE_GROUP=<your-resource-group>
# Delete the resource group and all resources in it
az group delete \
--name $RESOURCE_GROUP \
--yes \
--no-wait
Treści powiązane
Aby dowiedzieć się więcej na temat przygotowanej specyfikacji obrazu, zobacz Przygotowana specyfikacja obrazu w usłudze AKS (wersja zapoznawcza).