Azure Kubernetes Service (AKS)(Önizleme) içinde Hazırlanmış Görüntü Belirtimi (PIS) oluşturma ve yönetme

Hazırlanan Görüntü Belirtimi (PIS), gerekli kapsayıcı görüntülerinizi ve özelleştirmelerinizi içeren önceden yapılandırılmış düğüm görüntülerini tanımlamanızı sağlar. AKS, hazırlanan görüntüyü bir kez oluşturur ve düğüm sağlama sırasında yeniden kullanır ve sonraki ölçeklendirme işlemleri için başlangıç süresini kısaltir. Hazır Görüntü Belirtimi'nin nasıl çalıştığı ve ne zaman kullanılacağı hakkında daha fazla bilgi için bkz. AKS'de Hazırlanmış Görüntü Belirtimi (Önizleme).

Bu makalede AKS'de PIS oluşturma ve yönetme hakkında bilgi verilmektedir.

Important

AKS önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "mevcut olduğu şekilde" sağlanmakta olup, hizmet seviyesi anlaşmalarına ve sınırlı garantilere dahil edilmemektedir. AKS önizlemeleri, müşteri desteği ekibi tarafından maksimum çaba gösterilerek kısmen ele alınmaktadır. Bu nedenle, bu özellikler üretim kullanımı için tasarlanmamıştır. Daha fazla bilgi için aşağıdaki destek makalelerine bakın:

Önkoşullar

  • Desteklenen bir Kubernetes sürümünü çalıştıran mevcut bir AKS kümesi. Bir kümeniz yoksa bkz. AKS kümesi oluşturma.
  • Azure CLI sürüm 2.85.0 veya üzeri. Sürümünüzü bulmak için komutunu çalıştırın az --version . Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI'yı yükleme.
  • Kaynak grubunuzdaki AKS kaynaklarını oluşturmak ve yönetmek için uygun Azure RBAC izinlerine ihtiyacınız vardır.
  • Kapsayıcı görüntüleriniz AKS kümesinden erişilebilir olmalıdır. Azure Container Registry (ACR) kullanıyorsanız AKS kümenizle tümleşik olduğundan emin olun.
  • aks-preview CLI uzantısı sürüm 21.0.0b5 veya üzeri. Bu uzantıya sahip değilseniz bkz. CLI uzantısını aks-preview yükleme.
  • Aboneliğinize kayıtlı AKSPreparedImageSpecificationPreview özellik işareti. Kayıt ettirmediyseniz, bkz. Özellik bayrağını AKSPreparedImageSpecificationPreview kaydettirme.

Sınırlamalar

Önizleme sırasında aşağıdaki sınırlamalar geçerlidir:

  • Egemen bulutlar ve dış ağlarla fiziksel olarak yalıtılmış ortamlar hariç, genel Azure bölgelerinde kullanılabilir.
  • Desteklenen işletim sistemleri arasında Ubuntu, Azure Linux ve Windows bulunur.
  • Özel betikler, imaj oluşturma veya ölçeği büyütme işlemlerinin başarısız olmasına neden olabilir.
  • Mevcut özellikleri değiştirdiğinizde bunları yeniden oluşturmanız gerekebilir.

CLI uzantısını aks-preview yükleme

komutunu kullanarak aks-preview CLI uzantısını az extension add yükleyin.

az extension add --name aks-preview

komutunu kullanarak en son sürümü yüklediğinizden emin olmak için uzantıyı güncelleştirin az extension update .

az extension update --name aks-preview

Özellik bayrağını AKSPreparedImageSpecificationPreview kaydetme

  1. AKSPreparedImageSpecificationPreview komutunu kullanarak aboneliğinize özellik bayrağını az feature register kaydedin.

    az feature register \
      --namespace Microsoft.ContainerService \
      --name AKSPreparedImageSpecificationPreview
    
  2. komutunu kullanarak az feature show kayıt durumunu doğrulayın.

    az feature show \
      --namespace Microsoft.ContainerService \
      --name AKSPreparedImageSpecificationPreview
    
  3. Özellik bayrağı kaydedildikten sonra, az provider register komutunu kullanarak Microsoft.ContainerService kaynak sağlayıcısının kaydını yenileyin.

    az provider register --namespace Microsoft.ContainerService
    

Hazırlanmış Görüntü Belirtimi Oluşturma (PIS)

Temel hazırlanmış görüntü belirtimi oluşturma

az aks prepared-image-specification create komutunu kullanarak bir PIS oluşturun.

# 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

Önbelleğe alınmış görüntülerle Hazırlanmış Görüntü Belirtimi oluşturma

komutunu kullanarak az aks prepared-image-specification create kapsayıcı görüntülerini önceden önbelleğe alan bir PIS oluşturun.

# 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

Özel betikler kullanarak Hazırlanmış Görüntü Belirtimi oluşturma

komutunu kullanarak az aks prepared-image-specification create görüntü derlemesi sırasında özelleştirme betikleri çalıştıran bir PIS oluşturun.

# 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

Hazırlanmış Görüntü Belirtimi kullanarak küme veya düğüm havuzu oluşturma

BIR PIS oluşturduktan sonra, bir küme veya düğüm havuzu oluştururken veya güncelleştirirken buna başvurabilirsiniz. Hazırlanan görüntü sürümünün kaynak kimliğine ihtiyacınız vardır.

PIS kullanarak küme oluşturma

  1. komutunu kullanarak az aks prepared-image-specification version show PIS sürüm kaynak kimliğini alın.

    # 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. az aks create parametresiyle --prepared-image-specification-id komutunu kullanarak hazırlanan görüntüyü referans alan yeni bir AKS kümesi oluşturun.

    # 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
    

PIS kullanarak düğüm havuzu oluşturma

  1. komutunu kullanarak az aks prepared-image-specification version show PIS sürüm kaynak kimliğini alın.

    # 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. az aks nodepool add parametresiyle hazırlanan görüntüyü belirterek --prepared-image-specification-id komutunu kullanıp yeni bir düğüm havuzu oluşturun.

    # 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. az aks nodepool show komutunu kullanarak düğüm havuzunun PIS kullandığını doğrulayın.

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

Hazırlanan Görüntü Belirtimlerini Yönet

Hazırlanan Görüntü Belirtimlerini Listele

komutunu kullanarak bir kaynak grubundaki tüm Hazır Görüntü Belirtimlerini listeleyin 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

Belirli bir Hazırlanmış Görüntü Belirtimlerini göster

komutunu kullanarak belirli bir Hazır Görüntü Belirtiminin az aks prepared-image-specification show ayrıntılarını alın.

# 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

Hazırlanan Görüntü Belirtimi meta verilerini güncelleştirme

İki kaynak kavramı vardır: PIS kaynağı ve PIS sürümleri. Etiketler gibi PIS meta verilerini güncelleştirmek PIS kaynağını güncelleştirir ve başvuruda bulunan sürümün görüntüsünü veya betiklerini değiştirmez. Kapsayıcı görüntülerini veya betiklerini değiştirmek için yeni bir PIS sürümü oluşturun ve düğüm havuzunu bu PIS sürüm kimliğine başvuracak şekilde güncelleştirin.

Komutunu kullanarak az aks prepared-image-specification update mevcut Hazırlanmış Görüntü Belirtiminde etiketler gibi meta verileri güncelleştirebilirsiniz. Kapsayıcı görüntülerini veya betiklerini değiştirmek için bunun yerine yeni bir sürüm oluşturun.

# 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

Hazırlanan Görüntü Belirtiminin tüm sürümlerini listeleme

Komutunu kullanarak Hazırlanan Görüntü Belirtimi'nin tüm sürümlerini listeleyin 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

Hazırlanmış Görüntü Belirtiminin belirli bir sürümünü gösterme

az aks prepared-image-specification version show parametresini PIS sürümüne ayarlayarak --name komutunu kullanıp belirli bir sürümün ayrıntılarını alın.

# 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

Belirli bir Hazır Görüntü Belirtimi kullanan düğüm havuzlarını listeleme

Kümedeki Hazır Görüntü Belirtimine başvuran tüm düğüm havuzlarını bulmak için JMESPath filtresiyle komutunu kullanın az aks nodepool list .

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

Hazırlanmış Görüntü Belirtimi sürümünü yükseltme

Temel görüntüleriniz, bağımlılıklarınız veya özelleştirmeleriniz değiştiğinde yeni bir sürüm oluşturun ve düğüm havuzlarınızı buna başvuracak şekilde güncelleştirin. Önerilen iş akışı:

  1. Güncellenmiş konteyner görüntüleri veya betikler içeren yeni bir sürüm oluşturun.

  2. Üretim dışı düğüm havuzunda yeni sürümü doğrulayın.

  3. Üretim düğüm havuzlarını yeni sürümü kullanacak şekilde güncelleyin.

    # 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. Maliyet iyileştirme için kullanılmayan görüntüleri temizleyin.

AKS sürümü yükseltmeleri

Kubernetes sürümünü yükselttiğiniz zaman AKS, başvurulan PIS sürümü için hazırlanan VHD'yi otomatik olarak yeniden oluşturur. Kubernetes sürüm yükseltmesi için yeni bir PIS sürümü oluşturmanız gerekmez. Kapsayıcı görüntüleri veya betikler gibi PIS içeriği değiştiğinde yeni bir PIS sürümü oluşturmanız gerekir.

komutunu kullanarak az aks get-upgrades kullanılabilir yükseltmeleri denetleyin.

# 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

komutunu kullanarak kümeyi yükseltin az aks upgrade .

# 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

Üretim düğümü havuzlarını yükseltmeden önce yeni Kubernetes ve düğüm görüntüsü sürümlerini hedefleyen yeni bir Hazır Görüntü Belirtimi sürümü oluşturun ve doğrulayın.

komutunu kullanarak belirli bir düğüm havuzunu yükseltin az aks nodepool upgrade .

# 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

Bir düğüm havuzundan Hazırlanmış İmaj Spesifikasyonunu kaldırma

Bir düğüm havuzunda Hazır İmaj Belirtimi kullanmayı durdurmak için, az aks nodepool update parametresi için boş bir dize belirterek düğüm havuzunu --prepared-image-specification-id komutunu kullanarak güncelleştirin.

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

Hazırlanan Görüntü Belirtimi sürümünü silme

komutunu kullanarak az aks prepared-image-specification version delete belirli bir sürümü silin.

Important

Bir düğüm havuzu tarafından kullanılan bir PIS sürümünü silmeyin. Bunun yerine, PIS'yi kaldırmak veya başka bir PIS sürümüne başvurmak için düğüm havuzunu güncelleştirmeniz gerekir. Başvurulan bir sürümün silinmesi, AKS'nin hazırlanan görüntüyü başarıyla yeniden derlemesini veya döndürmesini engelleyebilir.

# 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

Hazırlanan Görüntü Belirtimlerini Silme

komutunu kullanarak Hazır Görüntü Belirtimi kaynağının az aks prepared-image-specification delete tamamını silin.

Important

PIS kaynağını silmeden önce, hiçbir düğüm havuzunun bu kaynağın sürümlerine başvurmadığından emin olun. Herhangi bir başvuru bulursanız, PIS kaynağını silmeden önce bunları kaldırın veya güncelleştirin. Başvurulan bir PIS'nin silinmesi, AKS'nin hazırlanan görüntüyü başarıyla yeniden derlemesini veya döndürmesini engelleyebilir.

# 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

Hazırlanan Görüntü Belirtimi performansını izleme

PIS'nin ortamınızda sağlama gecikme süresini azaltıp azaltmadığını değerlendirmek için aşağıdaki ölçümleri izleyin:

  • Düğüm sağlama süresi ve hazır olma süresi: Hazırlanmış görüntü kullanmayan düğümlerle karşılaştırın.
  • Yatay ölçeklendirme tamamlanma süresi: Otomatik ölçeklendiricinin tetiklenmesinden düğümlerin Hazır durumuna gelmesine kadar geçen süre.
  • Görüntü derleme süresi ve derleme başarı oranı: Görüntü hazırlama işlem hattının durumunu izleyin.
  • Pod başlatma süresi ve kapsayıcı görüntüsü çekme süresi: Görüntü ön önbelleğe alma işleminin etkili bir şekilde kullanıldığını doğrulayın.

Hazırlanmış İmaj Spesifikasyonu Sorunlarını Giderme

PIS ile ilgili hatalar hatanın nedenini içermelidir ve birçok hatanın özel betiklerden gelmesi olasıdır. PIS eklendikten sonra düğüm havuzu oluşturma veya ölçeği büyütme işlemi başarısız olursa, yeni bir sürüm oluşturmadan ya da düğüm havuzu referansını güncellemeden önce imaj oluşturma/özel betik günlüklerini incelemeli ve betiği doğrulamalısınız.

Görüntü oluşturma başarısız oluyor

Uyarı

Görüntü derlemesi sırasında özelleştirme betiği başarısız olduğunda AKS, müşterinin başlatabilmesi ve hata ayıklaması için vm'yi silmek yerine serbest bırakacaktır. PIS’in sonraki yeniden oluşturma işlemlerinde AKS, sanal makine ölçek kümesini ve derleme kaynaklarını silip yeniden oluşturur.

PIS hazırlanan görüntüyü oluşturamıyorsa şunları denetleyin:

  • Geçersiz veya yanlış biçimlendirilmiş özelleştirme betikleri.
  • Kapsayıcı kayıt deposu kimlik doğrulama hataları - AKS kümesinin belirtilen kayıt depolarına çekme yetkisine sahip olduğunu doğrulayın.
  • Kaynak grubu veya kayıt defterinde Azure RBAC izinleri eksik.
  • Hedef işletim sistemi için desteklenmeyen özelleştirme türleri.

Düğüm havuzu oluşturma işlemi başarısız oluyor

PIS'e referans veren bir düğüm havuzu oluşturulamazsa şunları doğrulayın:

  • PIS sürüm kimliği geçerli ve sürüm aynı bölgede var.
  • Aboneliğinizin istenen VM SKU'su için yeterli kotası var.
  • İstenen VM SKU'su hazırlanan görüntü tarafından desteklenir.
  • Bölge, önizleme sırasında PIS özelliğini destekler.

Ölçeklendirme işlemleri daha hızlı değildir

Sağlama süresinde bir azalma görmüyorsanız şunları denetleyin:

  • Hızlandırmak istediğiniz kapsayıcı görüntüleri PIS sürümünde yer alır.
  • Düğüm havuzu doğru sürümü işaret eder.
  • Yeni düğümler, temel AKS düğümü görüntüsünden değil, hazırlanan görüntüden önyükleniyor.
  • Darboğaz, iş yükünün başlatılması veya diğer ilklendirme işlemleri değil, kapsayıcı imajının çekilme süresidir.

Kaynakları temizle

Bu makalede test amacıyla kaynak oluşturduysanız, devam eden ücretlerden kaçınmak için işiniz bittiğinde bunları silin. Bu, PIS sürümlerini, PIS kaynaklarını, test düğümü havuzlarını ve test AKS kümelerini içerir.

Kaynak grubunu ve içindeki tüm kaynakları silmek için komutunu kullanın az group delete .

# 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

Hazırlanan Görüntü Belirtimi hakkında daha fazla bilgi edinmek için bkz. AKS'de Hazırlanmış Görüntü Belirtimi (Önizleme).