Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A Especificação de Imagem Preparada (PIS) permite definir imagens de nó pré-configuradas que incluem as imagens de contêiner e personalizações necessárias. O AKS cria a imagem preparada uma única vez e a reutiliza durante o provisionamento dos nós, reduzindo o tempo de inicialização para operações subsequentes de escalonamento. Para obter mais informações sobre como a Especificação de Imagem Preparada funciona e quando usá-la, consulte Especificação de Imagem Preparada no AKS (versão prévia).
Este artigo mostra como criar e gerenciar um PIS no AKS.
Importante
As funcionalidades em versão preliminar do AKS estão disponíveis de forma optativa e por autoatendimento. As versões prévias são fornecidas “no estado em que se encontram” e “conforme disponíveis” e são excluídas dos contratos de nível de serviço e da garantia limitada. As versões prévias do AKS são parcialmente cobertas pelo suporte ao cliente em uma base de melhor esforço. Dessa forma, esses recursos não são destinados ao uso em produção. Para obter mais informações, consulte os seguintes artigos:
Pré-requisitos
- Um cluster do AKS existente executando uma versão do Kubernetes com suporte. Se você não tiver um, confira Criar um cluster do AKS.
- CLI do Azure versão 2.85.0 ou posterior. Execute
az --versionpara localizar a sua versão. Se precisar instalar ou atualizar, consulte Instalar CLI do Azure. - Você precisa de permissões apropriadas Azure RBAC para criar e gerenciar recursos do AKS em seu grupo de recursos.
- Suas imagens de contêiner devem estar acessíveis no cluster do AKS. Se você usar Registro de Contêiner do Azure (ACR), verifique se ele está integrado ao cluster do AKS.
- A extensão da CLI
aks-previewversão 21.0.0b5 ou posterior. Caso não tenha essa versão, confira Instalar aaks-previewextensão da CLI. - O sinalizador de recurso
AKSPreparedImageSpecificationPreviewregistrado em sua assinatura. Se você não o registrou, confira Registrar oAKSPreparedImageSpecificationPreviewsinalizador de recurso.
Limitações
As seguintes limitações se aplicam durante a versão prévia:
- Disponível em regiões públicas do Azure, excluindo nuvens soberanas e ambientes isolados da Internet.
- Os sistemas operacionais com suporte incluem Ubuntu, Azure Linux e Windows.
- Scripts personalizados podem causar falhas na compilação da imagem ou no escalonamento vertical.
- Talvez seja necessário recriar as especificações existentes ao modificá-las.
Instalar a extensão da CLI aks-preview
Instale a extensão da CLI do aks-preview usando o az extension add comando.
az extension add --name aks-preview
Atualize a extensão para garantir que você tenha a versão mais recente instalada usando o az extension update comando.
az extension update --name aks-preview
Registrar o sinalizador de recurso AKSPreparedImageSpecificationPreview
Registre o sinalizador de recurso
AKSPreparedImageSpecificationPreviewna assinatura usando o comandoaz feature register.az feature register \ --namespace Microsoft.ContainerService \ --name AKSPreparedImageSpecificationPreviewVerifique o status do registro usando o
az feature showcomando.az feature show \ --namespace Microsoft.ContainerService \ --name AKSPreparedImageSpecificationPreviewDepois que a feature flag for registrada, atualize a inscrição do provedor de recursos Microsoft.ContainerService usando o comando
az provider register.az provider register --namespace Microsoft.ContainerService
Criar uma especificação de imagem preparada (PIS)
Criar uma especificação básica de imagem preparada
Crie um PIS usando o 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
Criar uma especificação de imagem preparada com imagens armazenadas em cache
Crie um PIS que pré-armazena em cache imagens de contêiner usando o 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
Criar uma especificação de imagem preparada usando scripts personalizados
Crie um PIS que executa scripts de personalização durante o build de imagem usando o 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
Criar um cluster ou pool de nós usando uma Especificação de Imagem Preparada
Depois de criar um PIS, você pode referenciá-lo ao criar ou atualizar um cluster ou pool de nós. Você precisa da ID de recurso da versão preparada da imagem.
Criar um cluster usando um PIS
Obtenha a ID do recurso de versão do PIS usando o 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)Crie um novo cluster do AKS que faça referência à imagem preparada usando o
az aks createcomando com o--prepared-image-specification-idparâmetro.# 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
Criar um pool de nós usando um PIS
Obtenha a ID do recurso de versão do PIS usando o 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)Crie um novo pool de nós que faça referência à imagem preparada usando o comando
az aks nodepool addcom o 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_IDVerifique se o pool de nós está usando o PIS usando o
az aks nodepool showcomando.az aks nodepool show \ --resource-group $RESOURCE_GROUP \ --cluster-name $CLUSTER_NAME \ --name userpool \ --query "{state:provisioningState, pisId:preparedImageSpecificationId}"
Gerenciar especificações de imagem preparadas
Listar especificações de imagem preparadas
Liste todas as Especificações de Imagem Preparadas em um grupo de recursos usando o 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 uma especificação de imagem preparada específica
Obtenha os detalhes de uma Especificação de Imagem Preparada específica usando o 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
Atualizar metadados de especificação de imagem preparada
Há dois conceitos de recurso: o recurso do PIS e as versões do PIS. Atualizar metadados do PIS, como tags, atualiza o recurso PIS e não altera a imagem nem os scripts da versão referenciada. Para alterar imagens de contêineres ou scripts, crie uma nova versão do PIS e atualize o pool de nós para referenciar o ID dessa versão do PIS.
Você pode atualizar metadados, como marcas, em uma Especificação de Imagem Preparada existente usando o az aks prepared-image-specification update comando. Para alterar as imagens ou scripts de contêiner, crie uma nova versão.
# 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
Listar todas as versões de uma Especificação de Imagem Preparada
Liste todas as versões de uma Especificação de Imagem Preparada usando o 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 uma versão específica de uma Especificação de Imagem Preparada
Obtenha os detalhes de uma versão específica usando o comando az aks prepared-image-specification version show com o parâmetro --name definido para a versão do 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
Listar grupos de nós que usam uma Prepared Image Specification específica
Para encontrar todos os pools de nós de um cluster que fazem referência a uma Especificação de Imagem Preparada, use o comando az aks nodepool list com um 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]"
Atualizar uma versão de Especificação de Imagem Preparada
Quando suas imagens base, dependências ou personalizações forem alteradas, crie uma nova versão e atualize os pools de nós para referenciá-la. O fluxo de trabalho recomendado é:
Crie uma nova versão com imagens ou scripts de contêiner atualizados.
Valide a nova versão em um pool de nós não produtivo.
Atualize os pools de nós de produção para fazer referência à nova versão.
# 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_IDLimpar imagens não usadas para otimização de custo.
Atualizações de versão do AKS
Quando você atualiza a versão do Kubernetes, o AKS recria automaticamente o VHD preparado da versão do PIS referenciada. Você não precisa criar uma nova versão do PIS para uma atualização de versão do Kubernetes. Você deve criar uma nova versão do PIS quando o conteúdo do PIS, como imagens de contêiner ou scripts, for alterado.
Verifique se há atualizações disponíveis usando o 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
Atualize o cluster usando o 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
Crie e valide uma nova versão da Especificação de Imagem Preparada voltada para as novas versões do Kubernetes e da imagem de nó antes de atualizar os pools de nós de produção.
Atualize um pool de nós específico usando o 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
Remover uma especificação de imagem preparada de um pool de nós
Para deixar de usar uma Especificação de Imagem Preparada em um pool de nós, atualize o pool de nós usando o comando az aks nodepool update com uma cadeia de caracteres vazia para o parâmetro --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 ""
Excluir uma versão de Especificação de Imagem Preparada
Exclua uma versão específica usando o az aks prepared-image-specification version delete comando.
Importante
Não exclua uma versão do PIS referenciada por um pool de nós. Você deve atualizar o pool de nós para remover o PIS ou referenciar outra versão do PIS. Excluir uma versão referenciada pode impedir que o AKS recompile ou reverta com êxito a imagem 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
Excluir uma especificação de imagem preparada
Exclua todo um recurso de Especificação de Imagem Preparada usando o az aks prepared-image-specification delete comando.
Importante
Antes de excluir um recurso do PIS, verifique se nenhum pool de nós faz referência a nenhuma de suas versões. Se você encontrar referências, remova ou atualize-as antes de excluir o recurso do PIS. Excluir uma PIS referenciada pode impedir que o AKS recompile ou reverta com êxito a imagem 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
Monitorar o desempenho da Especificação de Imagem Preparada
Para avaliar se o PIS está reduzindo a latência de provisionamento em seu ambiente, monitore as seguintes métricas:
- Duração do provisionamento do nó e tempo até ficar pronto: compare com nós que não usam uma imagem preparada.
- Tempo de conclusão da expansão horizontal: tempo desde o acionamento do autoescalador até os nós entrarem no estado Ready.
- Duração da compilação da imagem e taxa de êxito da compilação: acompanhe a integridade do pipeline de preparação da imagem.
- Tempo de inicialização do pod e duração da extração da imagem do contêiner: verifique se o pré-armazenamento em cache de imagens está sendo usado com eficácia.
Solucionar problemas de especificação de imagem preparada
Os erros relacionados ao PIS devem incluir o motivo da falha e muitas falhas provavelmente virão de scripts personalizados. Se a criação ou o aumento de escala do pool de nós falhar após adicionar a PIS, inspecione os logs da compilação da imagem e do script personalizado e valide o script antes de criar uma nova versão ou de atualizar a referência do pool de nós.
Falha na criação de imagem
Note
Quando um script de personalização falha durante a criação da imagem, o AKS desaloca a VM de build em vez de excluí-la, para que o cliente possa iniciá-la e fazer a depuração. Em rebakes posteriores da PIS, o AKS exclui e recria o conjunto de dimensionamento de máquinas virtuais e os recursos de build.
Se a PIS não criar a imagem preparada, verifique se:
- Scripts de personalização inválidos ou malformados.
- Falhas de autenticação do registro de contêiner – verifique se o cluster do AKS tem acesso de pull aos registros especificados.
- Faltam permissões do Azure RBAC no grupo de recursos ou no registro.
- Tipos de personalização sem suporte para o sistema operacional de destino.
Falha na criação do pool de nós
Se um pool de nós que referencia uma PIS falhar ao ser criado, verifique:
- A ID da versão do PIS é válida e a versão existe na mesma região.
- Sua assinatura tem cota suficiente para a SKU de VM solicitada.
- A SKU de VM solicitada é compatível com a imagem preparada.
- A região oferece suporte ao recurso PIS durante a versão prévia.
As operações de escala não são mais rápidas
Se você não observar redução no tempo de provisionamento, verifique:
- As imagens de contêiner que você deseja acelerar estão incluídas na versão do PIS.
- O pool de nós faz referência à versão correta.
- Novos nós são inicializados da imagem preparada, não da imagem base do nó do AKS.
- O gargalo é o tempo para baixar a imagem do contêiner, não a inicialização da carga de trabalho nem outras etapas de inicialização.
Limpar os recursos
Se você criou recursos neste artigo para fins de teste, exclua-os quando terminar para evitar encargos contínuos. Isso inclui versões do PIS, recursos do PIS, pools de nós de teste e clusters de teste do AKS.
Para excluir o grupo de recursos e todos os recursos nele, use o 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
Conteúdo relacionado
Para saber mais sobre a Especificação de Imagem Preparada, consulte Especificação de Imagem Preparada no AKS (versão prévia).