Tradicionalmente, executar um contêiner exige baixar e descompactar toda a imagem antes da inicialização. No entanto, muitas vezes apenas uma fração dos dados da imagem é necessária para iniciar o contêiner, o que resulta em tempos de inicialização prolongados. O recurso de carregamento sob demanda do Container Registry Enterprise Edition resolve esse problema ao baixar e descompactar somente os dados essenciais para a inicialização, em vez de processar a imagem inteira. Essa abordagem acelera significativamente a implantação de aplicações e melhora a elasticidade do dimensionamento.
Pré-requisitos
-
Você deve ter um cluster ACK compatível disponível.
NotaÉ possível usar imagens aceleradas em clusters ACK gerenciados ou dedicados a partir da versão v1.16.9, bem como em clusters ACK Edge, clusters ACK Serverless, clusters ACK Lingjun e clusters do Alibaba Cloud Container Compute Service (ACS) a partir da versão v1.26.3. Ao criar o cluster, o sistema operacional deve ser Alibaba Cloud Linux 2.1903, Alibaba Cloud Linux 3.2104, Alibaba Cloud Linux 3.2104 LTS 64 bit ARM edition, Alibaba Cloud Linux UEFI 2.1903 ou CentOS 7.9.
-
Crie uma instância do Container Registry Enterprise Edition. Para mais informações, consulte Criar uma instância do Container Registry Enterprise Edition.
ImportanteAs edições compatíveis do Container Registry Enterprise Edition variam conforme o modo de aceleração de imagem:
Modo full: compatível com as edições Standard ou Advanced.
Modo index-only: compatível com as edições Basic, Standard ou Advanced.
Configure a VPC do seu cluster ACK ou cluster ACK Serverless na instância do Container Registry Enterprise Edition. Imagens aceleradas só podem ser usadas dentro de uma VPC. Para mais informações, consulte Configurar controle de acesso para uma VPC.
Informações de base
O recurso de carregamento sob demanda do Container Registry Enterprise Edition permite usar imagens aceleradas nas suas implantações. Isso elimina a necessidade de baixar imagens completas e possibilita a descompactação em tempo real, melhorando significativamente a eficiência na distribuição de aplicações e a elasticidade do dimensionamento. O efeito da aceleração depende de fatores como o tamanho da imagem e as condições de rede do repositório. Em um teste, uma aplicação usando uma imagem NodeBB de 1,34 GB do Docker Hub levou 36 segundos para baixar a imagem, com um tempo total de inicialização de 38 segundos. Com uma imagem acelerada, o tempo de download foi reduzido para 4 segundos e o tempo total de inicialização caiu para apenas 9 segundos.
Limitações
Se o runtime do seu contêiner for containerd, os repositórios de imagens aceleradas podem usar nomes de domínio personalizados. Devido a limitações do docker, essa funcionalidade não é suportada ao usar o runtime docker. Para mais informações, consulte Usar um nome de domínio personalizado para acessar uma instância do Container Registry Enterprise Edition.
O modo index-only não pode ser usado em cenários de Function Compute (FC) ou Serverless App Engine (SAE).
Converta manualmente as imagens existentes para imagens aceleradas.
Disponibilidade por região
O recurso de carregamento sob demanda não está disponível nas regiões do Alibaba Finance Cloud e do Alibaba Gov Cloud.
Converter para uma imagem acelerada
Configure um repositório para converter automaticamente as imagens originais enviadas em imagens aceleradas. O tempo de conversão varia conforme o tamanho da imagem. A imagem original não é afetada.
A imagem acelerada usa o mesmo namespace e nome de repositório da imagem original. O formato da tag é o seguinte:
Modo index-only: a tag da imagem acelerada corresponde à tag da imagem original com o sufixo
_accelerated. Este modo é suportado apenas pelo runtime containerd. Não é possível excluir a tag da imagem original enquanto a imagem acelerada estiver em uso.-
Modo full:
Uma imagem acelerada com o sufixo
_acceleratedé compatível com os runtimes docker e containerd.-
Uma imagem acelerada com o sufixo
_containerd_accelerateddestina-se exclusivamente ao runtime containerd.Enquanto uma imagem com o sufixo
_containerd_acceleratedestiver em uso, não será possível excluir nem a imagem acelerada nem sua imagem original.
Faça login no console do Container Registry.
Na barra de navegação superior, selecione uma região.
No painel de navegação à esquerda, clique em Instances.
Na página Instances, clique na instância da edição Enterprise que deseja gerenciar.
Na página de detalhes da instância, no painel de navegação à esquerda, escolha .
Na página Repositories, clique no nome do repositório desejado ou clique em Manage na coluna Actions. No canto superior esquerdo da página Basic Information, clique em Edit.
-
Na caixa de diálogo Modify Settings, ative a opção Accelerated Image, selecione um modo e clique em Confirm.
Full Mode: oferece uma aceleração significativa para a inicialização de contêineres. O tamanho da imagem acelerada gerada corresponde a aproximadamente 130% do tamanho da imagem original. A geração de uma imagem acelerada a partir de uma imagem original de 1 GB leva cerca de 25 segundos. As camadas de imagem existentes não são regeneradas.
-
Modo index-only: proporciona cerca de 70% do efeito de aceleração do modo full. O tamanho da imagem acelerada equivale a aproximadamente 3% do tamanho da imagem original. A geração de uma imagem acelerada a partir de uma imagem original de 1 GB leva cerca de 3 segundos. Camadas de imagem que já possuem índice criado não são reindexadas.
ImportanteO modo index-only está em preview público. Recomendamos testá-lo em um ambiente de não produção antes de usá-lo em ambiente de produção.
NotaO modo index-only aplica-se apenas a imagens compactadas com
taroutgz. Esse modo não se aplica a imagens compactadas com outros métodos, comozstd.O modo index-only deve ser usado em conjunto com a imagem original, e a imagem original não pode ser excluída. No modo full, a imagem acelerada pode ser usada de forma independente.
O runtime docker não oferece suporte ao modo index-only.
Após configurar a aceleração de imagens, o envio de novas imagens aciona automaticamente tarefas de conversão. Caso deseje receber notificações ao concluir a conversão, configure as notificações de eventos. Por exemplo, defina a expressão como
_accelerated$. Para mais informações, consulte Configurar notificações de eventos. -
(Opcional) Especifique uma Prefetch File List. Os arquivos listados são pré-carregados quando a imagem acelerada é iniciada. Recomendamos o uso deste recurso quando houver necessidade de leitura de arquivos grandes durante a inicialização do contêiner.
NotaCada linha deve conter um caminho absoluto para um arquivo. Para diretórios, o caminho deve terminar com uma barra (
/).
Instalar o componente de aceleração de imagem
Para iniciar contêineres acelerados, instale o plugin de armazenamento para carregamento sob demanda nos seus nós de trabalho.
-
Clusters ACK gerenciados e dedicados
Ativar para um novo pool de nós
Faça login 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 pool de nós, expanda Advanced Options e ative Container Image Acceleration.
Ativar para um pool de nós existente
ImportanteAlterações em Container Image Acceleration entram em vigor apenas para nós adicionados ao pool após a modificação. 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 login 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 pool de nós 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 pool de nós. A coluna Status exibe Updating durante a atualização e Active após a conclusão.
Outros tipos de cluster
Adicione o rótulo de aceleração de imagem
alibabacloud.com/image-accelerate-enabled: trueaos nós. Essa ação ativa automaticamente o recurso de aceleração de imagem e instala o plugin de armazenamento de imagem durante a inicialização do nó.O método para adicionar um rótulo varia conforme o tipo de cluster:
Tipo de cluster
Guia de configuração
Cluster ACK Serverless
Cluster ACK Edge
-
Para pools de nós do lado da nuvem, consulte Criar e gerenciar um pool de nós.
-
Para pools de nós de borda, consulte Criar um pool de nós de borda.
Cluster ACK Lingjun
Alibaba Cloud Container Compute Service (ACS)
-
Instale o componente de aceleração de imagem.
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster desejado. No painel de navegação à esquerda, clique em Add-ons.
Na página Add-ons, localize aliyun-acr-acceleration-suite na seção More e clique em Install.
-
Na caixa de diálogo Tips, clique em OK.
No painel de navegação à esquerda, escolha . Na página DaemonSets, visualize os detalhes de instalação do DaemonSet do componente.
No painel de navegação à esquerda, escolha . Na página Deployments, visualize os detalhes de instalação do Deployment do componente.
A instalação do componente é concluída quando todos os seus pods estiverem em execução.
Habilitar imagens aceleradas
-
Configure as credenciais de acesso ao repositório.
AvisoConfigure o segredo de pull de imagem seguindo o princípio do menor privilégio. Conceda apenas as permissões necessárias para baixar as imagens de serviço usadas pelo cluster. Para mais informações, consulte Conceder uma política personalizada a um usuário RAM.
-
Opção 1: usar o componente aliyun-acr-credential-helper.
Se você já instalou o componente aliyun-acr-credential-helper e o configurou corretamente para sua instância do Container Registry Enterprise Edition, nenhuma ação adicional é necessária.
Caso ainda não tenha instalado o componente, faça a instalação agora. Para mais informações, consulte Usar o componente aliyun-acr-credential-helper para baixar imagens de contêiner sem segredo.
-
Opção 2: adicionar um rótulo a um segredo de pull de imagem.
NotaEste método é suportado apenas pelo componente aliyun-acr-acceleration-suite na versão 0.2.6 ou posterior.
Crie um Secret do tipo kubernetes.io/dockerconfigjson e adicione o rótulo images.alibabacloud.com/accelerated: true ao Secret.
kubectl create secret docker-registry <SecretName> --docker-server=<RegistryVpcDomain> --docker-username=<UserName> --docker-password=<Password>kubectl label secrets <SecretName> images.alibabacloud.com/accelerated="true"
-
-
Adicione um rótulo de aceleração de imagem.
Adicione um rótulo de aceleração de imagem a uma carga de trabalho, como um pod ou Deployment, ou a um namespace inteiro no seu cluster ACK ou cluster ACK Serverless. Ao rotular um namespace, o carregamento sob demanda é ativado para todas as cargas de trabalho elegíveis dentro desse namespace, eliminando a necessidade de modificar o arquivo YAML de cada carga de trabalho individualmente. Escolha o método mais adequado às suas necessidades.
NotaA chave do rótulo é
k8s.aliyun.com/image-accelerate-modee o valor éon-demand.-
Adicione um rótulo de aceleração de imagem a uma carga de trabalho.
O exemplo a seguir demonstra como adicionar um rótulo a um pod gerenciado por um Deployment. Execute o comando abaixo para editar o Deployment:
kubectl edit deployment <DeploymentName> -n <DeploymentNamespace>No arquivo YAML do Deployment, adicione o rótulo
k8s.aliyun.com/image-accelerate-mode: on-demand.apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx # enable on-demand mode k8s.aliyun.com/image-accelerate-mode: on-demand spec: containers: # your ACR instacne image - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/test/nginx:latest name: test command: ["sleep", "3600"] -
Adicione um rótulo de aceleração de imagem a um namespace.
-
Adicione um rótulo de aceleração de imagem pelo console.
Faça login no console do ACK e, na barra de navegação à esquerda, selecione Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Namespaces and Quotas.
Na página Namespace, localize o namespace desejado e clique em Edit na coluna Actions.
Na caixa de diálogo Edit Namespace, defina a Variable Key da Tag como
k8s.aliyun.com/image-accelerate-modee o Variable Value da Tag comoon-demand, e então clique em Confirm.
Adicione um rótulo de aceleração de imagem via linha de comando.
-
kubectl label namespaces <YOUR-NAMESPACE> k8s.aliyun.com/image-accelerate-mode=on-demandApós adicionar o rótulo de aceleração e converter uma imagem original em uma imagem acelerada, o componente de aceleração substitui automaticamente o endereço da imagem original pelo endereço da imagem acelerada e adiciona um nodeSelector para agendar pods em nós acelerados durante a criação ou atualização de pods dentro do namespace.
-