Compartilhar via


Melhorar o desempenho de pull de imagem de contêiner no Serviço de Kubernetes do Azure

Este artigo fornece métodos para melhorar o desempenho de pull de imagem de contêiner no AKS (Serviço de Kubernetes do Azure).

Extrações de imagem serializadas e paralelas

Há dois tipos de pulls de imagem de contêiner: pulls de imagem serializados e paralelos.

Nas versões do AKS anteriores à 1.31, por padrão, o AKS habilita pulls de imagem serializados. A partir da versão prévia 1.31 do AKS, por padrão, o AKS efetua pull de imagens de contêiner em paralelo. Normalmente, os pulls de imagem serializados devem ter menos desempenho do que os pulls de imagem paralelos, especialmente quando o serviço tenta extrair imagens de contêiner grandes ou numerosas.

No entanto, você ainda pode experimentar um desempenho reduzido usando pulls de imagem paralelos em comparação com o uso de pulls de imagem serial. Tentar extrair imagens grandes ou numerosas de maneira paralela pode limitar o disco. Isso é especialmente verdadeiro quando você usa recursos de disco e VM não otimizados. Nessa situação, você pode observar que o tempo para extrair as primeiras imagens é mais rápido em uma configuração serial, mas o tempo para extrair todas as imagens é mais rápido em uma configuração paralela. Dependendo das necessidades de carga de trabalho, você deve considerar o uso das etapas a seguir para dimensionar os recursos de disco e VM ou alternar o tipo de pull de imagem.

Melhorar o desempenho de pull de imagem em versões do AKS anteriores à 1.31

Atualize para o AKS 1.31 para alternar de pulls de imagem serializados para pulls de imagem paralelos. As extrações de imagem paralelas geralmente melhoram o desempenho de extração de imagem.

Melhorar o desempenho de pull de imagem no AKS 1.31 e versões posteriores

Se você perceber que os pulls de imagem paralelos aumentam a latência das operações em comparação com os pulls de imagem serializados, tente um ou mais métodos abaixo para melhorar o desempenho:

Usar discos de SO efêmeros

Altere de discos de sistema operacional (SO) gerenciados para discos de sistema operacional efêmeros para reduzir gargalos de taxa de transferência de disco em pull de imagem. Os discos do sistema operacional efêmero fornecem uma quantidade dinâmica de IOPS disponíveis, permitindo que eles sejam dimensionados com base em seus requisitos de carga de trabalho.

Aumentar o tamanho do disco do sistema operacional

Aumente o tamanho do disco do sistema operacional para reduzir um gargalo de taxa de transferência de disco na extração de imagens. Discos de sistema operacional gerenciados maiores aumentam a largura de banda de disco disponível.

Usar SKUs de VM mais recentes

Alterne para SKUs (unidades de manutenção de estoque) de máquina virtual (VM) de geração de hardware mais recente, como as séries V4 e V5. Isso pode reduzir os gargalos da CPU na extração de imagens. Os SKUs de VM mais recentes fornecem uma experiência de melhor desempenho em armazenamento e taxa de transferência de rede.

Aumentar o tamanho do SKU da VM

Aumente os núcleos de CPU disponíveis em seu SKU de VM para reduzir um gargalo de CPU na extração de imagens. A alocação de mais núcleos ajuda a evitar a limitação na VM.

Alternar tipo de extração de imagem

Use as seguintes instruções de sinalizador AFEC para ativar ou desativar imagens paralelas.

Ao executar o az feature list --namespace Microsoft.ContainerService, você verá o seguinte recurso:

{ "id": "/subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/providers/Microsoft.Features/providers/microsoft.ContainerService/features/DisableParallelImagePulls", "name": "microsoft.ContainerService/DisableParallelImagePulls", "properties": { "state": "NotRegistered" }, "type": "Microsoft.Features/providers/features" }

Você pode registrar o recurso em sua assinatura do Azure pelo seguinte comando:

az feature register --namespace Microsoft.ContainerService --name DisableParallelImagePulls

Expectativa de comportamento se o recurso estiver registrado:

  • Por padrão, atualizar qualquer pool de nós ou cluster para o Kubernetes 1.31 de uma versão anterior à 1.31 causará extração de imagem serial, e a atualização no Kubernetes 1.31 ou em uma versão posterior causará extração paralela.
  • Os pools de nós ou clusters que já estão executando o Kubernetes 1.31, mas foram criados antes do registro da assinatura, usarão inicialmente a extração paralela de imagens. No entanto, qualquer atualização de imagem de nó subsequente ou atualização de versão do Kubernetes fará com que o pool de nós ou cluster use a extração de imagem serial.
  • Para quaisquer novos clusters ou pools de nós criados ou atualizados para versões do Kubernetes anteriores à 1.31, o registro para esse recurso não terá efeito. Isso ocorre porque a extração paralela de imagens se aplica apenas às versões 1.31 e posteriores.
  • Executar um vazio PUT em pools ou clusters de nós existentes do Kubernetes 1.31 (que foram criados antes do registro da assinatura) não alternará imediatamente a extração paralela de imagens para a extração serial. Para acionar a alteração, o nó deve passar por uma nova imagem. Uma nova imagem ocorre apenas durante uma atualização de imagem do Kubernetes ou do nó. No entanto, a operação PUT atualizará o sinalizador no banco de dados e a alteração entrará em vigor durante a próxima atualização.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.