As imagens de contêiner são armazenadas como camadas compactadas. Quando um contêiner é iniciado, o runtime baixa e descompacta todas as camadas antes da execução, mesmo que, na maioria dos cenários de negócios, precise ler apenas uma parte dos dados da imagem. Para imagens grandes, esse download desnecessário domina o tempo de inicialização.
O ACK oferece suporte ao carregamento sob demanda de imagens de contêiner usando o Data Accelerator for Disaggregated Infrastructure (DADI). Em vez de baixar a imagem completa antecipadamente, o DADI carrega apenas os dados necessários ao contêiner e os descompacta em tempo real.
Para uma imagem do NodeBB de 1,34 GB no Docker Hub, o carregamento sob demanda reduz a fase de pull da imagem de 36 para 4 segundos e o tempo total de inicialização da aplicação de 38 para 9 segundos.
Os tempos de pull de imagem acima servem apenas como referência. O desempenho real depende do tamanho da imagem e das condições da rede.
Limites
|
Restrição |
Requisito |
|
Tipo de cluster |
Apenas clusters gerenciados pelo ACK. |
|
Versão do cluster |
1.26 ou posterior. Consulte Atualizar manualmente um cluster. |
|
Runtime do nó |
containerd 1.6.34 ou posterior. Consulte Atualizar um node pool. |
|
Modo DADI |
Apenas modo completo. O modo somente índice não tem suporte. |
Comportamento importante: ativar ou desativar a Aceleração de Imagem de Contêiner em um node pool afeta apenas os nós adicionados posteriormente. Para aplicar a alteração aos nós existentes, remova-os do node pool e adicione-os novamente. Consulte Remover um nó e Adicionar nós existentes.
Pré-requisitos
Antes de começar, verifique se você tem:
Um cluster gerenciado pelo ACK executando Kubernetes 1.26 ou posterior, com containerd 1.6.34 ou posterior como runtime do nó
Acesso a um repositório de imagens: ACR Enterprise Edition (Standard ou Premium) ou registro autogerenciado
Acesso ao cluster via
kubectl
Etapa 1: Obter uma imagem acelerada
Imagens aceleradas usam o formato DADI. Converta uma imagem existente com o recurso de conversão integrado do ACR Enterprise Edition (recomendado) ou com a ferramenta open source DADI.
Opção 1: Usar o ACR Enterprise Edition (recomendado)
O ACR Enterprise Edition (Standard ou Premium) converte imagens automaticamente no nível do repositório. Ao enviar uma imagem, o ACR cria uma cópia acelerada sem modificar a original. A imagem acelerada usa o mesmo namespace e nome de repositório, com _accelerated anexado à tag (por exemplo, latest torna-se latest_accelerated).
Para mais informações e limites, consulte Carregamento sob demanda de imagens de contêiner.
Faça logon no Console do Container Registry e selecione uma região.
No painel de navegação à esquerda, clique em Instances. Na página Instances, clique no nome da instância Enterprise Edition.
No painel de navegação à esquerda, selecione Repository > Repositories.
Clique no nome do repositório. Na página Details, clique em Edit no canto superior esquerdo.
Na caixa de diálogo Modify Settings, ative Accelerated Image, selecione Full Mode e clique em Confirm. Imagens enviadas após essa alteração acionam automaticamente uma tarefa de conversão. Para receber uma notificação quando a conversão for concluída, configure notificações de eventos com a expressão
_accelerated$. Consulte Notificações de Eventos.
Opção 2: Usar a ferramenta open source DADI
Use o conversor de imagens DADI para converter uma imagem manualmente.
-
Instale o snapshotter overlaybd.
# Download the package for your instance architecture. wget https://github.com/containerd/accelerated-container-image/releases/download/v1.2.3/overlaybd-snapshotter-1.2.3-20241016090917.0c2f057.x86_64.rpm rpm -ivh overlaybd-snapshotter-1.2.3-20241016090917.0c2f057.x86_64.rpm -
Instale a camada de dispositivo de bloco overlaybd.
# Download the package for your instance architecture. wget https://github.com/containerd/overlaybd/releases/download/v1.0.13/overlaybd-1.0.13-20240821.a117098.el8.x86_64.rpm rpm -ivh overlaybd-1.0.13-20240821.a117098.el8.x86_64.rpm -
Converta a imagem. O exemplo a seguir converte uma imagem em um repositório ACR. Para um registro autogerenciado, atualize o endereço da imagem e as credenciais conforme necessário.
Espaço reservado
Descrição
user:passwordCredenciais do registro
xxxxx-registry.cn-hangzhou.cr.aliyuncs.com/default/redisEndereço do repositório da imagem de origem
latestTag da imagem de origem (
-i)latest_obd_newTag da imagem de saída (
-o)/opt/overlaybd/snapshotter/convertor \ -u user:password \ -r xxxxx-registry.cn-hangzhou.cr.aliyuncs.com/default/redis \ -i latest \ -o latest_obd_newSubstitua os seguintes espaços reservados:
Etapa 2: Ativar a Aceleração de Imagem de Contêiner em um node pool
Novos node pools e node pools existentes oferecem suporte à Aceleração de Imagem de Contêiner. Os passos variam ligeiramente.
Ativar para um novo node pool
Faça logon no console do ACK e clique em Clusters no painel de navegação à esquerda.
Clique no nome do cluster. No painel de navegação à esquerda, escolha Nodes > Node Pools.
Ao criar um node pool, expanda Advanced Options e ative Container Image Acceleration.
Ativar para um node pool existente
Alterações na Aceleração de Imagem de Contêiner entram em vigor apenas para nós adicionados ao pool após a mudança. Nós existentes não são afetados. Para aplicar o recurso a nós existentes, remova-os e adicione-os novamente. Consulte Remover um nó e Adicionar nós existentes.
Faça logon no console do ACK e clique em Clusters no painel de navegação à esquerda.
Clique no nome do cluster. No painel de navegação à esquerda, escolha Nodes > Node Pools.
Localize o node pool e clique em Edit na coluna Actions. Na seção Advanced Options, ative Container Image Acceleration e siga as instruções na tela para atualizar o ConfigMap do node pool. A coluna Status exibe Updating durante a atualização e Active após a conclusão.
Etapa 3: Implantar uma aplicação com uma imagem acelerada
Configurar credenciais de pull de imagem
Instale o componente aliyun-acr-acceleration-suite para que o DADI possa autenticar-se no registro de imagens ao carregar dados sob demanda.
Faça logon no console do ACK e clique em Clusters no painel de navegação à esquerda.
Clique no nome do cluster. No painel de navegação à esquerda, clique em Add-ons.
Na página Add-ons, localize aliyun-acr-acceleration-suite na aba Others e clique em Install.
Após a instalação, configure as credenciais de pull com base no tipo de registro:
ACR Enterprise Edition: Instale o plugin password-free para injetar automaticamente credenciais de acesso em workloads elegíveis. Isso elimina o gerenciamento manual de Secrets. Consulte Fazer pull de imagens ACR sem secret.
Registro autogerenciado: Crie um Secret do tipo kubernetes.io/dockerconfigjson e aplique um rótulo para que o pacote de aceleração possa utilizá-lo.
# Create the Secret.
kubectl create secret docker-registry <SecretName> \
--docker-server=<RegistryVpcDomain> \
--docker-username=<UserName> \
--docker-password=<Password>
# Label the Secret for DADI.
kubectl label secrets <SecretName> images.alibabacloud.com/accelerated="true"
Se sua aplicação não precisar usar um secret para fazer pull de uma imagem privada, pule esta etapa.
Criar a aplicação
Use um seletor de nó para agendar pods em nós com aceleração de imagem ativada. O rótulo alibabacloud.com/image-accelerate-enabled: "true" é aplicado automaticamente aos nós com aceleração habilitada.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
nodeSelector:
alibabacloud.com/image-accelerate-enabled: "true" # Schedule to acceleration-enabled nodes only.
containers:
- name: test
image: xxxxx-registry.cn-hangzhou.cr.aliyuncs.com/default/redis:latest_obd_new # Replace with your accelerated image address.
command: ["sleep", "3600"]
Aplique o manifesto:
kubectl apply -f deployment.yaml
Próximos passos
Para acelerar a inicialização de workloads e nós usando snapshots de disco de dados, consulte Usar snapshots de disco de dados para acelerar a inicialização de aplicações de modelos grandes.