Membuat dan mengelola Spesifikasi Gambar yang Disiapkan (PIS) di Azure Kubernetes Service (AKS) (Pratinjau)

Spesifikasi Gambar yang Disiapkan (PIS) memungkinkan Anda menentukan gambar simpul yang telah dikonfigurasi sebelumnya yang menyertakan gambar dan penyesuaian kontainer yang diperlukan. AKS membuat image yang telah disiapkan satu kali dan menggunakannya kembali saat memprovisikan node, sehingga mengurangi waktu startup untuk operasi penskalaan berikutnya. Untuk informasi selengkapnya tentang cara kerja Spesifikasi Gambar yang Disiapkan dan kapan menggunakannya, lihat Spesifikasi Gambar yang Disiapkan di AKS (Pratinjau).

Artikel ini memperlihatkan kepada Anda cara membuat dan mengelola PIS di AKS.

Important

Fitur pratinjau AKS tersedia atas dasar layanan mandiri dan pendaftaran sukarela. Pratinjau disediakan "apa adanya" dan "sebagaimana tersedia," dan pratinjau tersebut dikecualikan dari perjanjian tingkat layanan (SLA) serta garansi terbatas. Fitur pratinjau AKS sebagian didukung oleh dukungan pelanggan sebatas upaya terbaik. Dengan demikian, fitur-fitur ini tidak dimaksudkan untuk penggunaan produksi. Untuk informasi lebih lanjut, lihat artikel dukungan berikut ini:

Prasyarat

  • Kluster AKS yang ada menjalankan versi Kubernetes yang didukung. Jika Anda tidak memilikinya, lihat Membuat kluster AKS.
  • Azure CLI versi 2.85.0 atau yang lebih baru. Jalankan az --version untuk menemukan versi Anda. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.
  • Anda memerlukan izin RBAC Azure yang sesuai untuk membuat dan mengelola sumber daya AKS di grup sumber daya Anda.
  • Gambar kontainer Anda harus dapat diakses dari kluster AKS. Jika Anda menggunakan Azure Container Registry (ACR), pastikan itu terintegrasi dengan kluster AKS Anda.
  • aks-preview Ekstensi CLI versi 21.0.0b5 atau yang lebih baru. Jika Anda tidak memilikinya, lihat Menginstal aks-preview ekstensi CLI.
  • Flag fitur AKSPreparedImageSpecificationPreview yang terdaftar pada langganan Anda. Jika Anda belum mendaftarkannya, lihat Mendaftarkan AKSPreparedImageSpecificationPreview bendera fitur.

Keterbatasan

Batasan berikut berlaku selama pratinjau:

  • Tersedia di wilayah Azure publik, tidak termasuk sovereign cloud dan lingkungan bersalur udara.
  • Sistem operasi yang didukung termasuk Ubuntu, Azure Linux, dan Windows.
  • Skrip kustom dapat menyebabkan kegagalan proses build image atau peningkatan skala image.
  • Anda mungkin perlu membuat ulang spesifikasi yang ada saat memodifikasinya.

aks-preview Menginstal ekstensi CLI

Instal ekstensi CLI aks-preview dengan menggunakan perintah az extension add.

az extension add --name aks-preview

Perbarui ekstensi untuk memastikan Anda memiliki versi terbaru yang diinstal dengan menggunakan az extension update perintah .

az extension update --name aks-preview

Daftarkan AKSPreparedImageSpecificationPreview penanda fitur

  1. Daftarkan AKSPreparedImageSpecificationPreview bendera fitur di langganan Anda menggunakan az feature register perintah .

    az feature register \
      --namespace Microsoft.ContainerService \
      --name AKSPreparedImageSpecificationPreview
    
  2. Verifikasi status pendaftaran menggunakan az feature show perintah .

    az feature show \
      --namespace Microsoft.ContainerService \
      --name AKSPreparedImageSpecificationPreview
    
  3. Setelah flag fitur terdaftar, segarkan pendaftaran penyedia sumber daya Microsoft.ContainerService menggunakan perintah az provider register.

    az provider register --namespace Microsoft.ContainerService
    

Membuat Spesifikasi Gambar yang Disiapkan (PIS)

Membuat Spesifikasi Dasar Gambar yang Disiapkan

Buat PIS dengan perintah 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

Membuat Spesifikasi Gambar yang Disiapkan dengan gambar yang di-cache

Buat PIS yang melakukan pra-cache gambar kontainer menggunakan az aks prepared-image-specification create perintah .

# 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

Membuat Spesifikasi Gambar yang Disiapkan menggunakan skrip kustom

Buat PIS yang menjalankan skrip kustomisasi selama pembuatan image menggunakan perintah 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

Membuat kluster atau kumpulan simpul menggunakan Spesifikasi Gambar yang Disiapkan

Setelah membuat PIS, Anda dapat mereferensikannya saat membuat atau memperbarui kluster atau kumpulan simpul. Anda memerlukan ID sumber daya dari versi gambar yang disiapkan.

Membuat kluster menggunakan PIS

  1. Dapatkan ID sumber daya versi PIS menggunakan perintah 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)
    
  2. Buat kluster AKS baru yang merujuk ke image yang telah disiapkan dengan menggunakan perintah az aks create dengan parameter --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
    

Membuat kumpulan simpul menggunakan PIS

  1. Dapatkan ID sumber daya versi PIS menggunakan perintah 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)
    
  2. Buat node pool baru yang merujuk ke image yang telah disiapkan dengan menggunakan perintah az aks nodepool add dengan parameter --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. Pastikan bahwa pool node menggunakan PIS dengan perintah az aks nodepool show.

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

Mengelola Spesifikasi Gambar yang Disiapkan

Cantumkan Spesifikasi Gambar yang Disiapkan

Cantumkan semua spesifikasi image yang disiapkan dalam grup sumber daya menggunakan perintah 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

Tampilkan Spesifikasi Gambar yang Disiapkan Tertentu

Dapatkan detail dari Spesifikasi Image yang Disiapkan tertentu menggunakan perintah 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

Memperbarui metadata Spesifikasi Gambar yang Disiapkan

Ada dua konsep sumber daya: sumber daya PIS dan versi PIS. Memperbarui metadata PIS, seperti tag, memperbarui sumber daya PIS dan tidak mengubah gambar atau skrip versi yang dirujuk. Untuk mengubah gambar atau skrip kontainer, buat versi PIS baru dan perbarui kumpulan simpul untuk mereferensikan ID versi PIS tersebut.

Anda dapat memperbarui metadata, seperti tag, pada Spesifikasi Gambar yang Disiapkan yang ada menggunakan az aks prepared-image-specification update perintah . Untuk mengubah gambar atau skrip kontainer, buat versi baru sebagai gantinya.

# 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

Mencantumkan semua versi Spesifikasi Gambar yang Disiapkan

Cantumkan semua versi Spesifikasi Citra yang Disiapkan menggunakan perintah 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

Menampilkan versi tertentu dari Spesifikasi Gambar yang Disiapkan

Dapatkan detail versi tertentu menggunakan perintah az aks prepared-image-specification version show dengan parameter --name yang diatur ke versi 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

Mencantumkan kumpulan simpul yang menggunakan Spesifikasi Gambar yang Disiapkan tertentu

Untuk menemukan semua kumpulan simpul dalam kluster yang mereferensikan Spesifikasi Gambar yang Disiapkan, gunakan az aks nodepool list perintah dengan filter 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]"

Meningkatkan versi Spesifikasi Gambar yang Disiapkan

Saat gambar dasar, dependensi, atau kustomisasi Anda berubah, buat versi baru dan perbarui kumpulan simpul Anda untuk mereferensikannya. Alur kerja yang direkomendasikan adalah:

  1. Buat versi baru dengan gambar atau skrip kontainer yang diperbarui.

  2. Validasi versi baru dalam kumpulan simpul nonproduksi.

  3. Perbarui kumpulan simpul produksi untuk mereferensikan versi baru.

    # 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. Bersihkan gambar yang tidak digunakan untuk pengoptimalan biaya.

Peningkatan versi AKS

Saat Anda meningkatkan versi Kubernetes, AKS secara otomatis membangun kembali VHD yang disiapkan untuk versi PIS yang direferensikan. Anda tidak perlu membuat versi PIS baru untuk peningkatan versi Kubernetes. Anda harus membuat versi PIS baru saat konten PIS, seperti gambar kontainer atau skrip, berubah.

Periksa peningkatan yang tersedia menggunakan az aks get-upgrades perintah .

# 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

Tingkatkan kluster menggunakan az aks upgrade perintah .

# 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

Buat dan validasi versi baru Spesifikasi Citra Siap Pakai yang ditujukan untuk versi baru Kubernetes dan citra node sebelum meningkatkan versi pool node produksi.

Tingkatkan kumpulan simpul tertentu menggunakan az aks nodepool upgrade perintah .

# 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

Menghapus Spesifikasi Gambar yang Disiapkan dari kumpulan simpul

Untuk berhenti menggunakan Spesifikasi Image yang Disiapkan pada node pool, perbarui node pool menggunakan perintah az aks nodepool update dengan string kosong untuk parameter --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 ""

Menghapus versi Spesifikasi Gambar yang Disiapkan

Hapus versi tertentu menggunakan az aks prepared-image-specification version delete perintah .

Important

Jangan hapus versi PIS yang dirujuk oleh kumpulan simpul. Sebagai gantinya, Anda harus memperbarui kumpulan simpul untuk menghapus PIS atau mereferensikan versi PIS lain. Menghapus versi yang dirujuk dapat membuat AKS gagal membangun ulang atau meluncurkan image yang telah disiapkan.

# 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

Menghapus Spesifikasi Gambar yang Disiapkan

Hapus seluruh resource Prepared Image Specification dengan perintah az aks prepared-image-specification delete.

Important

Sebelum menghapus sumber daya PIS, pastikan tidak ada kumpulan simpul yang mereferensikan salah satu versinya. Jika Anda menemukan referensi apa pun, hapus atau perbarui sebelum menghapus sumber daya PIS. Menghapus PIS yang direferensikan dapat mencegah AKS berhasil membangun kembali atau menggulung gambar yang disiapkan.

# 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

Memantau performa Spesifikasi Gambar yang Disiapkan

Untuk mengevaluasi apakah PIS mengurangi latensi provisi di lingkungan Anda, pantau metrik berikut:

  • Durasi penyediaan node dan waktu hingga siap: Bandingkan dengan node yang tidak menggunakan image yang telah disiapkan.
  • Waktu penyelesaian penambahan skala: Waktu dari pemicu autoscaler hingga node berada dalam status Ready.
  • Durasi build gambar dan tingkat keberhasilan build: Lacak kesehatan alur persiapan gambar.
  • Waktu mulai pod dan durasi pengunduhan image kontainer: Pastikan bahwa pra-cache image digunakan secara efektif.

Memecahkan Masalah Spesifikasi Gambar yang Disiapkan

Kesalahan terkait PIS harus mencakup alasan kegagalan, dan banyak kegagalan kemungkinan berasal dari skrip kustom. Jika pembuatan node pool atau scale-up gagal setelah menambahkan PIS, Anda harus memeriksa log build image dan log skrip kustom, serta memvalidasi skrip tersebut sebelum membuat versi baru atau memperbarui referensi node pool.

Pembuatan gambar gagal

Nota

Ketika skrip kustomisasi gagal selama proses build image, AKS melepas alokasi VM build tersebut alih-alih menghapusnya agar pelanggan dapat menyalakannya dan melakukan debug. Pada rebake PIS berikutnya, AKS akan menghapus dan membuat ulang sumber daya build set skala komputer virtual.

Jika PIS gagal membuat image yang telah disiapkan, periksa hal-hal berikut:

  • Skrip kustomisasi tidak valid atau salah bentuk.
  • Kegagalan autentikasi registri kontainer - verifikasi bahwa kluster AKS memiliki akses penarikan ke registri yang ditentukan.
  • Izin RBAC Azure hilang pada grup sumber daya atau registri.
  • Jenis kustomisasi yang tidak didukung untuk OS target.

Pembuatan kumpulan simpul gagal

Jika kumpulan node yang merujuk ke PIS gagal dibuat, pastikan hal berikut:

  • ID versi PIS adalah valid dan versi tersebut ada di wilayah yang sama.
  • Langganan Anda memiliki kuota yang memadai untuk SKU VM yang diminta.
  • SKU VM yang diminta didukung oleh gambar yang disiapkan.
  • Wilayah ini mendukung fitur PIS selama pratinjau.

Operasi penskalaan tidak menjadi lebih cepat

Jika Anda tidak melihat pengurangan waktu penyediaan, pastikan hal berikut:

  • Gambar kontainer yang ingin Anda percepat disertakan dalam versi PIS.
  • Kumpulan simpul mereferensikan versi yang benar.
  • Simpul baru melakukan booting dari gambar yang disiapkan, bukan gambar node AKS dasar.
  • Hambatannya adalah waktu yang diperlukan untuk menarik image kontainer, bukan proses startup workload atau inisialisasi lainnya.

Membersihkan sumber daya

Jika Anda membuat sumber daya dalam artikel ini untuk tujuan pengujian, hapus sumber daya tersebut setelah selesai untuk menghindari biaya yang sedang berlangsung. Ini termasuk versi PIS, sumber daya PIS, kumpulan simpul pengujian, dan kluster AKS pengujian.

Untuk menghapus grup sumber daya dan semua sumber daya di dalamnya, gunakan az group delete perintah .

# 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

Untuk mempelajari selengkapnya tentang Spesifikasi Gambar yang Disiapkan, lihat Spesifikasi Gambar yang Disiapkan di AKS (Pratinjau).