Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La especificación de imagen preparada (PIS) le permite definir imágenes de nodo preconfiguradas que incluyen las imágenes de contenedor y las personalizaciones necesarias. AKS compila la imagen preparada una vez y la reutiliza durante el aprovisionamiento de nodos, lo que reduce el tiempo de inicio para las operaciones de escalado posteriores. Para obtener más información sobre cómo funciona la especificación de imagen preparada y cuándo usarla, consulte Especificaciones de imagen preparadas en AKS (versión preliminar).
En este artículo se muestra cómo crear y administrar un PIS en AKS.
Importante
Las características en versión preliminar de AKS están disponibles en modalidad de autoservicio y previa suscripción. Las versiones preliminares se proporcionan "tal cual" y "como están disponibles", y están excluidas de los Acuerdos de nivel de servicio y la garantía limitada. Las versiones preliminares de AKS cuentan con soporte parcial por parte del servicio al cliente en la medida de lo posible. Por lo tanto, estas características no están diseñadas para su uso en producción. Para más información, consulte los siguientes artículos de soporte:
Prerrequisitos
- Un clúster de AKS existente que ejecuta una versión de Kubernetes compatible. Si no tiene ninguna, consulte Creación de un clúster de AKS.
- Cli de Azure versión 2.85.0 o posterior. Ejecute
az --versionpara buscar su versión. Si necesita instalar o actualizar, consulte Install CLI de Azure. - Necesita los permisos de RBAC de Azure adecuados para crear y administrar recursos de AKS en el grupo de recursos.
- Las imágenes de contenedor deben ser accesibles desde el clúster de AKS. Si usa Azure Container Registry (ACR), asegúrese de que está integrado con el clúster de AKS.
- La extensión de la CLI de
aks-previewversión 21.0.0b5 o posterior. Si no la tiene, consulte Instalar la extensión de laaks-previewCLI. - La marca de característica
AKSPreparedImageSpecificationPreviewregistrada en la suscripción. Si no la ha registrado, consulte Registrar elAKSPreparedImageSpecificationPreviewindicador de característica.
Limitaciones
Se aplican las siguientes limitaciones durante la versión preliminar:
- Disponible en las regiones públicas de Azure, excluidas las nubes soberanas y los entornos aislados.
- Los sistemas operativos compatibles incluyen Ubuntu, Azure Linux y Windows.
- Las secuencias de comandos personalizadas pueden provocar fallos en la compilación de la imagen o en el escalado vertical.
- Es posible que tenga que volver a crear las especificaciones existentes al modificarlas.
Instalación de la extensión aks-preview de la CLI
Instale la extensión de la CLI aks-preview mediante el az extension add comando .
az extension add --name aks-preview
Actualice la extensión para asegurarse de que tiene instalada la versión más reciente mediante el az extension update comando .
az extension update --name aks-preview
Registro de la marca de característica AKSPreparedImageSpecificationPreview
Registre la marca de características
AKSPreparedImageSpecificationPreviewen su suscripción con el comandoaz feature register.az feature register \ --namespace Microsoft.ContainerService \ --name AKSPreparedImageSpecificationPreviewCompruebe el estado del registro mediante el
az feature showcomando .az feature show \ --namespace Microsoft.ContainerService \ --name AKSPreparedImageSpecificationPreviewUna vez registrada la marca de función, actualice el registro del proveedor de recursos Microsoft.ContainerService mediante el comando
az provider register.az provider register --namespace Microsoft.ContainerService
Crear una especificación de imagen preparada (PIS)
Crear una especificación básica de imagen preparada
Cree un PIS mediante el az aks prepared-image-specification create comando .
# 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
Creación de una especificación de imagen preparada con imágenes almacenadas en caché
Cree un PIS que almacene previamente en caché imágenes de contenedor mediante el az aks prepared-image-specification create comando .
# 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
Creación de una especificación de imagen preparada mediante scripts personalizados
Cree un PIS que ejecute scripts de personalización durante la compilación de imágenes mediante el az aks prepared-image-specification create comando .
# 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
Creación de un clúster o grupo de nodos mediante una especificación de imagen preparada
Después de crear un PIS, puede hacer referencia a él al crear o actualizar un clúster o grupo de nodos. Necesita el identificador de recurso de la versión de imagen preparada.
Creación de un clúster mediante un PIS
Obtenga el identificador de recurso de versión de PIS mediante el comando
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)Cree un nuevo clúster de AKS que haga referencia a la imagen preparada mediante el comando
az aks createcon el parámetro--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
Creación de un grupo de nodos mediante un PIS
Obtenga el identificador de recurso de versión de PIS mediante el comando
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)Cree un nuevo grupo de nodos que haga referencia a la imagen preparada mediante el comando
az aks nodepool addcon el parámetro--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_IDCompruebe que el grupo de nodos usa el PIS mediante el
az aks nodepool showcomando .az aks nodepool show \ --resource-group $RESOURCE_GROUP \ --cluster-name $CLUSTER_NAME \ --name userpool \ --query "{state:provisioningState, pisId:preparedImageSpecificationId}"
Administrar especificaciones de imagen preparadas
Enumerar especificaciones de imagen preparadas
Enumere todas las especificaciones de imagen preparadas de un grupo de recursos mediante el az aks prepared-image-specification list comando .
# 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
Mostrar una especificación de imagen preparada específica
Obtenga los detalles de una especificación de imagen preparada específica mediante el az aks prepared-image-specification show comando .
# 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
Actualizar metadatos de especificación de imágenes preparadas
Hay dos conceptos de recursos: el recurso PIS y las versiones de PIS. Al actualizar metadatos de PIS, como etiquetas, se actualiza el recurso de PIS y no se cambia la imagen o los scripts de la versión a la que se hace referencia. Para cambiar las imágenes o scripts de contenedor, cree una nueva versión de PIS y actualice el grupo de nodos para hacer referencia a ese identificador de versión de PIS.
Puede actualizar metadatos, como etiquetas, en una especificación de imagen preparada existente mediante el az aks prepared-image-specification update comando . Para cambiar las imágenes o scripts de contenedor, cree una nueva versión en su lugar.
# 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
Enumerar todas las versiones de una especificación de imagen preparada
Enumere todas las versiones de una especificación de imagen preparada con el az aks prepared-image-specification version list comando .
# 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
Mostrar una versión específica de una especificación de imagen preparada
Obtenga los detalles de una versión específica con el comando az aks prepared-image-specification version show y el parámetro --name establecido en la versión 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
Enumeración de grupos de nodos que usan una especificación de imagen preparada específica
Para buscar todos los grupos de nodos de un clúster que hacen referencia a una especificación de imagen preparada, use el az aks nodepool list comando con un filtro 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]"
Actualizar una versión de especificación de imagen preparada
Cuando cambien las imágenes base, las dependencias o las personalizaciones, cree una nueva versión y actualice los grupos de nodos para hacer referencia a ellas. El flujo de trabajo recomendado es:
Cree una nueva versión con las imágenes o scripts de contenedor actualizados.
Valide la nueva versión en un grupo de nodos que no sea de producción.
Actualice los grupos de nodos de producción para hacer referencia a la nueva versión.
# 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_IDLimpiar imágenes sin usar para la optimización de costos.
Actualizaciones de la versión de AKS
Al actualizar la versión de Kubernetes, AKS vuelve a generar automáticamente el disco duro virtual preparado para la versión de PIS a la que se hace referencia. No es necesario crear una nueva versión de PIS para una actualización de la versión de Kubernetes. Debe crear una nueva versión de PIS cuando cambie el contenido de PIS, como imágenes de contenedor o scripts.
Compruebe si hay actualizaciones disponibles mediante el az aks get-upgrades comando .
# 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
Actualice el clúster mediante el az aks upgrade comando .
# 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
Importante
Cree y valide una nueva versión de la especificación de imagen preparada dirigida a las nuevas versiones de Kubernetes y de la imagen de nodo antes de actualizar los grupos de nodos de producción.
Actualice un grupo de nodos específico mediante el az aks nodepool upgrade comando .
# 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
Quitar una especificación de imagen preparada de un grupo de nodos
Para dejar de usar una especificación de imagen preparada en un grupo de nodos, actualice el grupo de nodos mediante el az aks nodepool update comando con una cadena vacía para el --prepared-image-specification-id parámetro .
# 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 ""
Eliminar una versión de la especificación de imagen preparada
Elimine una versión específica mediante el az aks prepared-image-specification version delete comando .
Importante
No elimine una versión de PIS a la que hace referencia un grupo de nodos. En su lugar, debe actualizar el grupo de nodos para quitar PIS o hacer referencia a otra versión de PIS. La eliminación de una versión a la que se hace referencia puede impedir que AKS recompile o implemente correctamente la imagen preparada.
# 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
Eliminar una especificación de imagen preparada
Elimine todo un recurso de especificación de imagen preparada mediante el az aks prepared-image-specification delete comando .
Importante
Antes de eliminar un recurso de PIS, asegúrese de que ningún grupo de nodos haga referencia a ninguna de sus versiones. Si encuentra alguna referencia, quite o actualícelas antes de eliminar el recurso de PIS. La eliminación de un PIS al que se hace referencia puede impedir que AKS recompile o implemente correctamente la imagen preparada.
# 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
Supervisar el rendimiento de la especificación de imagen preparada
Para evaluar si PIS reduce la latencia de aprovisionamiento en su entorno, supervise las métricas siguientes:
- Duración del aprovisionamiento del nodo y tiempo hasta que esté listo: compárelo con nodos que no usan una imagen preparada.
- Tiempo de finalización de escalabilidad horizontal: tiempo desde que se activa el escalador automático hasta que los nodos están en estado Ready.
- Duración de compilación de imágenes y tasa de éxito de compilación: realice un seguimiento del estado de la pipeline de preparación de imágenes.
- Tiempo de inicio del pod y duración de la descarga de imágenes de contenedor: compruebe que la precarga de imágenes en caché se utiliza de forma eficaz.
Solución de problemas de especificaciones de imágenes preparadas
Los errores relacionados con PIS deben incluir el motivo del error y es probable que muchos errores provengan de scripts personalizados. Si se produce un error al crear o escalar el grupo de nodos después de agregar PIS, debe inspeccionar los registros de compilación de la imagen o del script personalizado y validar el script antes de crear una nueva versión o actualizar la referencia al grupo de nodos.
Se produce un error en la creación de imágenes
Note
Cuando se produce un error en un script de personalización durante la compilación de imágenes, AKS desasigna la máquina virtual de compilación en lugar de eliminarla para que el cliente pueda iniciarla y depurarla. En las nuevas compilaciones de PIS, AKS elimina y vuelve a crear los recursos de compilación y del conjunto de escalado de máquinas virtuales.
Si el PIS no puede compilar la imagen preparada, compruebe si:
- Scripts de personalización no válidos o con formato incorrecto.
- Errores de autenticación del registro de contenedores: compruebe que el clúster de AKS tiene permisos de extracción en los registros especificados.
- Faltan permisos de Azure RBAC en el grupo de recursos o en el registro.
- Tipos de personalización no admitidos para el sistema operativo de destino.
Se produce un error en la creación del grupo de nodos
Si un grupo de nodos que hace referencia a un PIS no se puede crear, compruebe lo siguiente:
- El identificador de versión de PIS es válido y la versión existe en la misma región.
- La suscripción tiene cuota suficiente para la SKU de máquina virtual solicitada.
- La SKU de máquina virtual solicitada es compatible con la imagen preparada.
- La región admite la característica PIS durante la versión preliminar.
Las operaciones de escalado no son más rápidas
Si no ve un tiempo de aprovisionamiento reducido, compruebe lo siguiente:
- Las imágenes de contenedores que desea acelerar se incluyen en la versión de PIS.
- El grupo de nodos hace referencia a la versión correcta.
- Los nuevos nodos arrancan desde la imagen preparada, no la imagen de nodo de AKS base.
- El cuello de botella es el tiempo de descarga de la imagen del contenedor, no el arranque de la carga de trabajo ni ningún otro proceso de inicialización.
Limpieza de recursos
Si ha creado recursos en este artículo con fines de prueba, elimínelos cuando haya terminado para evitar cargos en curso. Esto incluye versiones de PIS, recursos de PIS, grupos de nodos de prueba y clústeres de AKS de prueba.
Para eliminar el grupo de recursos y todos los recursos de él, use el az group delete comando .
# 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
Contenido relacionado
Para obtener más información sobre la especificación de imagen preparada, consulte Especificaciones de imagen preparadas en AKS (versión preliminar).