Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit Prepared Image Specification (PIS) können Sie vorkonfigurierte Node-Images definieren, die die von Ihnen benötigten Container-Images und Anpassungen enthalten. AKS erstellt das vorbereitete Image einmal und verwendet es während der Knotenbereitstellung wieder, wodurch die Startzeit für nachfolgende Skalierungsvorgänge reduziert wird. Weitere Informationen zur Funktionsweise der vorbereiteten Bildspezifikation und deren Verwendung finden Sie unter "Vorbereitete Bildspezifikation" in AKS (Vorschau).
In diesem Artikel erfahren Sie, wie Sie eine PIS in AKS erstellen und verwalten.
Von Bedeutung
AKS-Preview-Funktionen stehen auf Selbstbedienungs- und Opt-in-Basis zur Verfügung. Vorschauversionen werden „im Istzustand“ und „wie verfügbar“ bereitgestellt und sind von den Service Level Agreements und der eingeschränkten Garantie ausgeschlossen. AKS-Vorschauversionen werden teilweise vom Kundensupport auf Grundlage der bestmöglichen Leistung abgedeckt. Daher sind diese Funktionen nicht für die Verwendung in der Produktion vorgesehen. Weitere Informationen finden Sie in den folgenden Supportartikeln:
Voraussetzungen
- Ein vorhandener AKS-Cluster mit einer unterstützten Kubernetes-Version. Wenn Sie noch keinen haben, lesen Sie die Informationen zum Erstellen eines AKS-Clusters.
- Azure CLI, Version 2.85.0 oder höher. Führen Sie
az --versionaus, um Ihre Version zu ermitteln. Wenn Sie eine Installation oder ein Upgrade durchführen müssen, finden Sie weitere Informationen unter Azure CLI installieren. - Sie benötigen geeignete Azure RBAC-Berechtigungen zum Erstellen und Verwalten von AKS-Ressourcen in Ihrer Ressourcengruppe.
- Ihre Containerimages müssen vom AKS-Cluster aus zugänglich sein. Wenn Sie Azure Container Registry (ACR) verwenden, stellen Sie sicher, dass sie in Ihren AKS-Cluster integriert ist.
- Die
aks-previewCLI-Erweiterung in der Version 21.0.0b5 oder höher. Wenn Sie sie nicht haben, siehe Installieren deraks-previewCLI-Erweiterung. - Das
AKSPreparedImageSpecificationPreviewFeature-Flag, das in Ihrem Abonnement registriert ist. Falls Sie es noch nicht registriert haben, siehe Registrieren desAKSPreparedImageSpecificationPreviewFeature-Flags.
Einschränkungen
Die folgenden Einschränkungen gelten während der Vorschau:
- Verfügbar in öffentlichen Azure Regionen, ausgenommen souveräne Clouds und luftgespaltene Umgebungen.
- Unterstützte Betriebssysteme umfassen Ubuntu, Azure Linux und Windows.
- Benutzerdefinierte Skripts können Zu Fehlern beim Erstellen oder Skalieren von Bildern führen.
- Möglicherweise müssen Sie vorhandene Spezifikationen neu erstellen, wenn Sie sie ändern.
Installieren Sie die aks-preview-Erweiterung für die Befehlszeilenschnittstelle
Installieren Sie die Aks-Preview CLI-Erweiterung mithilfe des az extension add Befehls.
az extension add --name aks-preview
Aktualisieren Sie die Erweiterung, um sicherzustellen, dass die neueste Version mit dem az extension update Befehl installiert ist.
az extension update --name aks-preview
Registriere die AKSPreparedImageSpecificationPreview-Feature-Flag
Registrieren Sie die Feature-Flag
AKSPreparedImageSpecificationPreviewin Ihrem Abonnement mithilfe desaz feature register-Befehls.az feature register \ --namespace Microsoft.ContainerService \ --name AKSPreparedImageSpecificationPreviewÜberprüfen Sie den Registrierungsstatus mithilfe des
az feature showBefehls.az feature show \ --namespace Microsoft.ContainerService \ --name AKSPreparedImageSpecificationPreviewAktualisieren Sie nach der Registrierung des Feature-Flags die Registrierung des Microsoft. ContainerService-Ressourcenanbieter mit dem
az provider registerBefehl.az provider register --namespace Microsoft.ContainerService
Erstellen einer vorbereiteten Bildspezifikation (PIS)
Erstellen einer grundlegenden vorbereiteten Bildspezifikation
Erstellen Sie mithilfe des az aks prepared-image-specification create Befehls eine PIS.
# 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
Erstellen einer vorbereiteten Bildspezifikation mit zwischengespeicherten Bildern
Erstellen Sie mithilfe des az aks prepared-image-specification create Befehls eine PIS, die Containerimages vorab zwischenspeichert.
# 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
Erstellen einer vorbereiteten Bildspezifikation mit benutzerdefinierten Skripts
Erstellen Sie mithilfe des Befehls az aks prepared-image-specification create eine PIS, die während der Imageerstellung Anpassungsskripts ausführt.
# 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
Erstellen eines Cluster- oder Knotenpools mithilfe einer vorbereiteten Imagespezifikation
Nachdem Sie eine PIS erstellt haben, können Sie darauf verweisen, wenn Sie einen Cluster- oder Knotenpool erstellen oder aktualisieren. Sie benötigen die Ressourcen-ID der vorbereiteten Bildversion.
Erstellen eines Clusters mithilfe eines PIS
Rufen Sie die PIS-Versionsressourcen-ID mithilfe des
az aks prepared-image-specification version showBefehls ab.# 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)Erstellen Sie einen neuen AKS-Cluster, der mithilfe des
az aks create-Befehls mit dem Parameter--prepared-image-specification-idauf das vorbereitete Image verweist.# 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
Erstellen eines Knotenpools mithilfe eines PIS
Rufen Sie die PIS-Versionsressourcen-ID mithilfe des
az aks prepared-image-specification version showBefehls ab.# 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)Erstellen Sie einen neuen Knotenpool, der mithilfe des Befehls
az aks nodepool addunter Verwendung des Parameters--prepared-image-specification-idauf das vorbereitete Image verweist.# 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_IDÜberprüfen Sie, ob der Knotenpool die PIS mit dem
az aks nodepool showBefehl verwendet.az aks nodepool show \ --resource-group $RESOURCE_GROUP \ --cluster-name $CLUSTER_NAME \ --name userpool \ --query "{state:provisioningState, pisId:preparedImageSpecificationId}"
Verwalten vorbereiteter Bildspezifikationen
Vorbereitete Bildspezifikationen auflisten
Alle vorbereiteten Bildspezifikationen in einer Ressourcengruppe mithilfe des az aks prepared-image-specification list Befehls auflisten.
# 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
Anzeigen einer bestimmten vorbereiteten Bildspezifikation
Rufen Sie die Details einer bestimmten vorbereiteten Bildspezifikation mithilfe des az aks prepared-image-specification show Befehls ab.
# 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
Aktualisieren vorbereiteter Bildspezifikationsmetadaten
Es gibt zwei Ressourcenkonzepte: die PIS-Ressource und PIS-Versionen. Das Aktualisieren von PIS-Metadaten, z. B. Tags, aktualisiert die PIS-Ressource und ändert nicht das Bild oder die Skripts der referenzierten Version. Um Containerimages oder Skripts zu ändern, erstellen Sie eine neue PIS-Version, und aktualisieren Sie den Knotenpool, um auf diese PIS-Versions-ID zu verweisen.
Mithilfe des az aks prepared-image-specification update Befehls können Sie Metadaten aktualisieren, z. B. Tags, in einer vorhandenen vorbereiteten Bildspezifikation. Um die Containerimages oder Skripts zu ändern, erstellen Sie stattdessen eine neue Version.
# 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
Auflisten aller Versionen einer vorbereiteten Bildspezifikation
Listet alle Versionen einer vorbereiteten Bildspezifikation mithilfe des az aks prepared-image-specification version list Befehls auf.
# 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
Anzeigen einer bestimmten Version einer vorbereiteten Bildspezifikation
Rufen Sie die Details einer bestimmten Version mithilfe des az aks prepared-image-specification version show Befehls ab, wobei der --name Parameter auf die PIS-Version festgelegt ist.
# 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
Knotenpools auflisten, die eine bestimmte Spezifikation eines vorbereiteten Images verwenden
Um alle Knotenpools in einem Cluster zu finden, die auf eine vorbereitete Imagespezifikation verweisen, verwenden Sie den az aks nodepool list Befehl mit einem JMESPath-Filter.
# 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]"
Aktualisieren auf eine Version mit Spezifikation für vorbereitete Images
Wenn sich Ihre Basis-Images, Abhängigkeiten oder Anpassungen ändern, erstellen Sie eine neue Version und aktualisieren Sie Ihre Knotenpools so, dass sie darauf verweisen. Dies ist der empfohlene Workflow:
Erstellen Sie eine neue Version mit aktualisierten Containerimages oder Skripts.
Überprüfen Sie die neue Version in einem Nichtproduktionsknotenpool.
Aktualisieren Sie Produktionsknotenpools, um auf die neue Version zu verweisen.
# 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_IDBereinigen Sie nicht verwendete Bilder zur Kostenoptimierung.
AKS-Versionsupgrades
Wenn Sie die Kubernetes-Version aktualisieren, erstellt AKS automatisch die vorbereitete VHD für die referenzierte PIS-Version neu. Sie müssen keine neue PIS-Version für ein Kubernetes-Versionsupgrade erstellen. Sie sollten eine neue PIS-Version erstellen, wenn sich der PIS-Inhalt, z. B. Containerimages oder Skripts, ändert.
Suchen Sie mithilfe des az aks get-upgrades Befehls nach verfügbaren Upgrades.
# 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
Aktualisieren Sie den Cluster mithilfe des az aks upgrade Befehls.
# 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
Von Bedeutung
Erstellen und validieren Sie eine neue Version der Prepared Image Specification, die für die neuen Kubernetes- und Node-Image-Versionen vorgesehen ist, bevor Sie die Produktions-Node-Pools aktualisieren.
Aktualisieren Sie einen bestimmten Knotenpool mithilfe des az aks nodepool upgrade Befehls.
# 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
Entfernen Sie eine vorbereitete Image-Spezifikation aus einem Knotenpool
Um die Verwendung einer vorbereiteten Imagespezifikation für einen Knotenpool zu beenden, aktualisieren Sie den Knotenpool mithilfe des az aks nodepool update Befehls mit einer leeren Zeichenfolge für den --prepared-image-specification-id Parameter.
# 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 ""
Löschen einer vorbereiteten Bildspezifikationsversion
Löschen Sie eine bestimmte Version mithilfe des az aks prepared-image-specification version delete Befehls.
Von Bedeutung
Löschen Sie keine PIS-Version, auf die von einem Knotenpool verwiesen wird. Stattdessen sollten Sie den Knotenpool aktualisieren, um PIS zu entfernen oder auf eine andere PIS-Version zu verweisen. Das Löschen einer referenzierten Version kann AKS daran hindern, das vorbereitete Image erfolgreich neu zu erstellen oder auszurollen.
# 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
Löschen einer vorbereiteten Bildspezifikation
Löschen Sie eine gesamte Ressource für vorbereitete Bildspezifikationen mithilfe des az aks prepared-image-specification delete Befehls.
Von Bedeutung
Stellen Sie vor dem Löschen einer PIS-Ressource sicher, dass keine Knotenpools auf eine der zugehörigen Versionen verweisen. Wenn Sie Verweise finden, entfernen oder aktualisieren Sie diese, bevor Sie die PIS-Ressource löschen. Das Löschen eines referenzierten PIS kann verhindern, dass AKS das vorbereitete Image erfolgreich erneut erstellt oder ausrollt.
# 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
Überwachen der Leistung der vorbereiteten Bildspezifikation
Um zu bewerten, ob PIS die Bereitstellungslatenz in Ihrer Umgebung verringert, überwachen Sie die folgenden Metriken:
- Bereitstellungsdauer von Knoten und Zeit bis zur Einsatzbereitschaft: Vergleichen Sie dies mit Knoten, die kein vorbereitetes Image verwenden.
- Abschlusszeit der Hochskalierung: Zeit von der Auslösung des Autoscalers bis die Knoten den Status „Ready“ erreicht haben.
- Dauer der Image-Erstellung und Erfolgsrate der Builds: Verfolgen Sie den Zustand der Pipeline zur Image-Erstellung.
- Pod-Startzeit und Dauer des Abrufs des Container-Images: Überprüfen Sie, ob das Vorab-Caching von Images wirksam eingesetzt wird.
Problembehandlung für Spezifikation für vorbereitete Images
PIS-bezogene Fehler sollten den Fehlergrund enthalten, und viele Fehler werden wahrscheinlich von benutzerdefinierten Skripts stammen. Wenn das Erstellen oder Skalieren des Knotenpools nach dem Hinzufügen von PIS fehlschlägt, sollten Sie die Imagebuild-/benutzerdefinierten Skriptprotokolle überprüfen und das Skript überprüfen, bevor Sie eine neue Version erstellen oder den Knotenpoolverweis aktualisieren.
Fehler bei der Imageerstellung
Hinweis
Wenn ein Anpassungsskript während der Imageerstellung fehlschlägt, gibt AKS die Build-VM frei, anstatt sie zu löschen, damit der Kunde sie starten und debuggen kann. Bei späteren PIS-Rebakes löscht AKS die Skalierungsgruppe für virtuelle Computer sowie die Buildressourcen und erstellt sie neu.
Wenn der PIS das vorbereitete Image nicht erstellt, überprüfen Sie folgendes:
- Ungültige oder falsch formatierte Anpassungsskripts.
- Authentifizierungsfehler bei der Containern Registry – überprüfen Sie, ob der AKS-Cluster Pullzugriff auf die angegebenen Registrys hat.
- Fehlende Azure RBAC-Berechtigungen für die Ressourcengruppe oder Registrierung.
- Nicht unterstützte Anpassungstypen für das Zielbetriebssystem.
Fehler bei der Erstellung des Knotenpools
Wenn ein Knotenpool, der auf einen PIS verweist, nicht erstellt werden kann, überprüfen Sie Folgendes:
- Die PIS-Versions-ID ist gültig, und die Version ist in derselben Region vorhanden.
- Ihr Abonnement verfügt über ein ausreichendes Kontingent für die angeforderte VM-SKU.
- Die angeforderte VM-SKU wird vom vorbereiteten Image unterstützt.
- Die Region unterstützt die PIS-Funktion in der Vorschau.
Skalierungsvorgänge sind nicht schneller
Wenn keine eingeschränkte Bereitstellungszeit angezeigt wird, überprüfen Sie Folgendes:
- Die Container-Images, die Sie beschleunigen möchten, sind in der PIS-Version enthalten.
- Der Knotenpool verweist auf die richtige Version.
- Neue Knoten starten aus dem vorbereiteten Image und nicht aus dem Basis-Image für AKS-Knoten.
- Der Engpass ist die Zeit zum Abrufen des Container-Images, nicht der Start der Workload oder eine sonstige Initialisierung.
Bereinigen von Ressourcen
Wenn Sie Ressourcen in diesem Artikel zu Testzwecken erstellt haben, löschen Sie sie, wenn Sie damit fertig sind, um laufende Gebühren zu vermeiden. Dazu gehören PIS-Versionen, PIS-Ressourcen, Testknotenpools und Test-AKS-Cluster.
Verwenden Sie den az group delete Befehl, um die Ressourcengruppe und alle darin vorhandenen Ressourcen zu löschen.
# 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
Verwandte Inhalte
Weitere Informationen zur vorbereiteten Bildspezifikation finden Sie unter "Vorbereitete Bildspezifikation" in AKS (Vorschau).