Vytvoření a správa připravené specifikace obrázků (PIS) v Azure Kubernetes Service (AKS) (Preview)

Specifikace připravené image (PIS) umožňuje definovat předem nakonfigurované image uzlů, které zahrnují požadované image kontejnerů a vlastní úpravy. AKS sestaví připravenou image jednou a znovu ji použije během zřizování uzlů, což zkracuje dobu spuštění pro následné operace škálování. Další informace o tom, jak funguje připravená specifikace obrázku a kdy ji použít, najdete v tématu Připravená specifikace image v AKS (Preview).

Tento článek popisuje, jak v AKS vytvořit a spravovat PIS.

Důležité

Funkce AKS ve verzi Preview jsou k dispozici na bázi samoobsluhy a dobrovolného přihlášení. Ukázky jsou poskytovány "tak, jak jsou" a "dle dostupnosti" a jsou vyloučeny ze smluv o úrovni služeb a z omezené záruky. Předběžné verze AKS jsou částečně pokryty zákaznickou podporou podle možností. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:

Předpoklady

  • Existující cluster AKS se spuštěnou podporovanou verzí Kubernetes Pokud ho nemáte, přečtěte si téma Vytvoření clusteru AKS.
  • Azure CLI verze 2.85.0 nebo novější Spuštěním az --version vyhledejte svou verzi. Pokud potřebujete instalovat nebo upgradovat, podívejte se na Install Azure CLI.
  • K vytváření a správě prostředků AKS ve vaší skupině prostředků potřebujete příslušná oprávnění Azure RBAC.
  • Vaše image kontejneru musí být přístupné z clusteru AKS. Pokud používáte Azure Container Registry (ACR), ujistěte se, že je integrovaná s clusterem AKS.
  • Rozšíření CLI aks-preview verze 21.0.0b5 nebo novější. Pokud ji nemáte, viz Instalace rozšíření aks-preview CLI.
  • Příznak funkce AKSPreparedImageSpecificationPreview, zaregistrovaný v rámci vašeho předplatného. Pokud jste ho nezaregistrovali, přečtěte si článek Registrace příznaku AKSPreparedImageSpecificationPreview funkce.

Omezení

Během verze Preview platí následující omezení:

  • K dispozici ve veřejných oblastech Azure, s výjimkou svrchovaných cloudů a izolovaných prostředí.
  • Mezi podporované operační systémy patří Ubuntu, Azure Linux a Windows.
  • Vlastní skripty můžou způsobit selhání sestavení nebo vertikálního navýšení kapacity image.
  • Při úpravách možná budete muset znovu vytvořit existující specifikace.

Nainstalovat rozšíření aks-preview příkazového řádku

Nainstalujte rozšíření CLI aks-preview pomocí příkazu az extension add.

az extension add --name aks-preview

Pomocí příkazu aktualizujte rozšíření, abyste měli nainstalovanou az extension update nejnovější verzi.

az extension update --name aks-preview

Zaregistruj příznak funkce AKSPreparedImageSpecificationPreview

  1. Zaregistrujte příznak funkce AKSPreparedImageSpecificationPreview ve svém předplatném pomocí příkazu az feature register.

    az feature register \
      --namespace Microsoft.ContainerService \
      --name AKSPreparedImageSpecificationPreview
    
  2. Pomocí příkazu ověřte stav az feature show registrace.

    az feature show \
      --namespace Microsoft.ContainerService \
      --name AKSPreparedImageSpecificationPreview
    
  3. Po zaregistrování příznaku funkce aktualizujte registraci poskytovatele prostředků Microsoft.ContainerService pomocí příkazu az provider register.

    az provider register --namespace Microsoft.ContainerService
    

Vytvoření specifikace připraveného obrázku (PIS)

Vytvoření základní specifikace připravených obrázků

Vytvořte PIS pomocí příkazu 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

Vytvoření připravené specifikace obrázku s obrázky uloženými v mezipaměti

Vytvořte PIS, které pomocí příkazu az aks prepared-image-specification create předběžně ukládá image kontejnerů do mezipaměti.

# 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

Vytvoření připravené specifikace obrázku pomocí vlastních skriptů

Vytvořte PIS, který během sestavování bitové kopie spouští skripty pro přizpůsobení, pomocí příkazu 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 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

Vytvoření clusteru nebo fondu uzlů pomocí specifikace připravené image

Po vytvoření PIS se na něj můžete odvolat při vytváření nebo aktualizaci clusteru nebo fondu uzlů. Potřebujete ID prostředku připravené verze image.

Vytvořte cluster pomocí PIS

  1. Pomocí příkazu az aks prepared-image-specification version show získejte ID prostředku verze PIS.

    # 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)
    
  2. Pomocí příkazu az aks create s parametrem --prepared-image-specification-id vytvořte nový cluster AKS, který odkazuje na připravený image.

    # 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
    

Vytvořit fond uzlů pomocí PIS

  1. Pomocí příkazu az aks prepared-image-specification version show získejte ID prostředku verze PIS.

    # 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)
    
  2. Vytvořte nový fond uzlů, který odkazuje na připravený obraz, pomocí příkazu az aks nodepool add s 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_ID
    
  3. Ověřte pomocí příkazu az aks nodepool show, že fond uzlů používá PIS.

    az aks nodepool show \
        --resource-group $RESOURCE_GROUP \
        --cluster-name $CLUSTER_NAME \
        --name userpool \
        --query "{state:provisioningState, pisId:preparedImageSpecificationId}"
    

Správa specifikací připravených imagí

Výpis připravených specifikací obrázků

Pomocí příkazu az aks prepared-image-specification list vypište všechny specifikace připravených imagí ve skupině prostředků.

# 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

Zobrazit konkrétní specifikaci připraveného obrázku

Pomocí příkazu získejte podrobnosti o konkrétní specifikaci připravené image az aks prepared-image-specification show .

# 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

Aktualizace metadat specifikace připravených obrázků

Existují dva koncepty prostředků: prostředek PIS a verze PIS. Aktualizace metadat PIS, jako jsou tagy, aktualizuje prostředek PIS a nemění image ani skripty u odkazované verze. Pokud chcete změnit image kontejnerů nebo skripty, vytvořte novou verzi PIS a aktualizujte fond uzlů tak, aby odkazoval na ID této verze PIS.

Metadata, jako jsou štítky, můžete u existující specifikace připraveného obrazu aktualizovat pomocí příkazu az aks prepared-image-specification update. Pokud chcete změnit image kontejneru nebo skripty, vytvořte místo toho novou verzi.

# 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

Výpis všech verzí specifikace připravených imagí

Pomocí příkazu vypíšete všechny verze připravené specifikace obrázku az aks prepared-image-specification version list .

# 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

Zobrazení konkrétní verze specifikace připravené image

Pomocí příkazu az aks prepared-image-specification version show s parametrem --name nastaveným na verzi PIS získejte podrobnosti o konkrétní verzi.

# 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

Vypsat fondy uzlů, které používají konkrétní specifikaci připravené image

Pokud chcete najít všechny fondy uzlů v clusteru, které odkazují na specifikaci Prepared Image Specification, použijte příkaz az aks nodepool list s 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]"

Upgradovat verzi specifikace připravené bitové kopie

Když se změní vaše základní bitové kopie, závislosti nebo vlastní úpravy, vytvořte novou verzi a aktualizujte fondy uzlů tak, aby na ni odkazovaly. Doporučený pracovní postup je:

  1. Vytvořte novou verzi s aktualizovanými imagemi kontejneru nebo skripty.

  2. Ověřte novou verzi v neprodukční skupině uzlů.

  3. Aktualizujte fondy produkčních uzlů tak, aby odkazovaly na novou verzi.

    # 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_ID
    
  4. Vyčistěte nepoužívané obrazy pro optimalizaci nákladů.

Aktualizace verzí AKS

Když upgradujete verzi Kubernetes, AKS automaticky znovu sestaví připravený virtuální pevný disk pro odkazovanou verzi PIS. Pro upgrade verze Kubernetes nemusíte vytvářet novou verzi PIS. Při změně obsahu PIS, jako jsou image kontejnerů nebo skripty, byste měli vytvořit novou verzi PIS.

Pomocí příkazu zkontrolujte dostupné upgrady az aks get-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

Upgradujte cluster pomocí az aks upgrade příkazu.

# 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

Důležité

Vytvořte a ověřte novou verzi specifikace Prepared Image Specification, která je určená pro nové verze imagí Kubernetes a uzlů, před upgradeem produkčních fondů uzlů.

Pomocí příkazu upgradujte konkrétní fond az aks nodepool upgrade uzlů.

# 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

Odebrat specifikaci připravené bitové kopie z fondu uzlů

Pokud chcete ve fondu uzlů přestat používat specifikaci připravené image, aktualizujte fond uzlů pomocí příkazu az aks nodepool update se zadáním prázdného řetězce pro parametr --prepared-image-specification-id.

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

Odstranění verze připravené specifikace obrázku

Pomocí příkazu odstraňte konkrétní verzi az aks prepared-image-specification version delete .

Důležité

Neodstraňujte verzi PIS, na kterou odkazuje fond uzlů. Místo toho byste měli aktualizovat fond uzlů tak, aby odebral PIS nebo odkazoval na jinou verzi PIS. Odstraněním odkazované verze může AKS zabránit úspěšnému opětovnému sestavení nebo vrácení připravené image.

# 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

Odstranění specifikace připravené image

Odstraňte celý prostředek specifikace připraveného obrazu pomocí příkazu az aks prepared-image-specification delete.

Důležité

Před smazáním prostředku PIS se ujistěte, že žádné fondy uzlů neodkazují na žádnou z jeho verzí. Pokud najdete nějaké odkazy, před odstraněním prostředku PIS je odeberte nebo aktualizujte. Odstranění odkazovaného souboru PIS může zabránit úspěšnému opětovnému sestavení nebo vrácení připravené image do AKS.

# 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

Monitorování výkonu připravených specifikací obrázků

Chcete-li vyhodnotit, zda PIS ve vašem prostředí snižuje prodlevu při zřizování, sledujte následující metriky:

  • Doba zřizování uzlu a čas do připravenosti: Porovnejte s uzly, které nepoužívají připravený image.
  • Doba dokončení horizontálního navýšení kapacity: Doba od spuštění automatického škálování do okamžiku, kdy jsou uzly ve stavu Ready.
  • Doba sestavení obrazu a míra úspěšnosti sestavení: Sledujte stav kanálu pro přípravu obrazu.
  • Doba spuštění podu a doba stahování obrazu kontejneru: Ověřte, že se předběžné ukládání obrazů do mezipaměti používá efektivně.

Řešení problémů s funkcí Prepared Image Specification

Chyby související s PIS by měly zahrnovat důvod selhání a mnoho selhání pravděpodobně pochází z vlastních skriptů. Pokud se po přidání PIS nepodaří vytvořit fond uzlů nebo navýšit jeho kapacitu, měli byste zkontrolovat protokoly sestavení image nebo vlastního skriptu a ověřit skript před vytvořením nové verze nebo aktualizací odkazu na fond uzlů.

Vytvoření bitové kopie se nezdařilo

Note

Když skript pro přizpůsobení během sestavování image systému selže, AKS uvolní virtuální počítač použitý pro sestavení místo aby ho odstranil, aby jej zákazník mohl spustit a provést ladění. Při dalších opakovaných sestaveních PIS AKS odstraní a znovu vytvoří prostředky škálovací sady virtuálních počítačů nebo sestavení.

Pokud se PIS nepodaří vytvořit připravený obraz, zkontrolujte:

  • Neplatné nebo poškozené skripty pro přizpůsobení
  • Selhání ověřování registru kontejnerů – ověřte, že cluster AKS má oprávnění ke stahování ze zadaných registrů.
  • Chybí oprávnění Azure RBAC ve skupině prostředků nebo v registru.
  • Nepodporované typy přizpůsobení cílového operačního systému

Vytvoření skupiny uzlů se nezdařilo

Pokud se nepodaří vytvořit fond uzlů, který odkazuje na PIS, ověřte:

  • ID verze PIS je platné a verze existuje ve stejné oblasti.
  • Vaše předplatné má dostatečnou kvótu pro požadovanou skladovou položku virtuálního počítače.
  • Požadované SKU virtuálního počítače je podporováno připraveným image.
  • Tato oblast podporuje funkci PIS ve verzi Preview.

Operace škálování nejsou rychlejší

Pokud nedojde ke zkrácení doby zřizování, ověřte následující:

  • Image kontejnerů, které chcete zrychlit, jsou součástí verze PIS.
  • Skupina uzlů odkazuje na správnou verzi.
  • Nové uzly se spouštějí z připravené bitové kopie, nikoli ze základní bitové kopie uzlu AKS.
  • Úzkým hrdlem je doba stažení kontejnerového obrazu, nikoli spuštění úlohy ani jiná inicializace.

Vyčistěte zdroje

Pokud jste vytvořili prostředky v tomto článku pro účely testování, odstraňte je, až budete hotovi, abyste se vyhnuli průběžným poplatkům. To zahrnuje verze PIS, prostředky PIS, fondy testovacích uzlů a testovací clustery AKS.

Pokud chcete odstranit skupinu prostředků a všechny prostředky v ní, použijte az group delete příkaz.

# 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

Další informace o specifikaci připravených obrázků najdete v tématu Připravená specifikace obrázku v AKS (Preview)