Antes de executar uma ECI, o sistema precisa baixar as imagens de contêiner necessárias. Esse download é o principal fator de atraso na inicialização do pod. O ImageCache cria previamente snapshots de cache das imagens para que as criações subsequentes reutilizem esses dados e reduzam o tempo de inicialização em nós virtuais.
A economia real de tempo varia conforme a quantidade de imagens, o tamanho dos arquivos e as condições da rede.
Faturamento
A criação e o uso de caches de imagem podem gerar custos. Consulte Faturamento de caches de imagem.
Pré-requisitos
Verifique se você tem:
Um cluster ACK com nós virtuais habilitados
Acesso ao cluster via
kubectl
Etapa 1: Ative o suporte a ImageCache
Verifique se o cluster oferece suporte ao ImageCache:
kubectl get crd/imagecaches.eci.alibabacloud.com
Se o comando retornar informações sobre
imagecaches.eci.alibabacloud.com, o recurso está disponível. Prossiga para a Etapa 2.Em caso de erro, atualize o componente ACK Virtual Node para a versão mais recente.
Etapa 2: Crie um cache de imagem
Prefira a criação automática, exceto quando for essencial obter velocidade máxima já no primeiro pod.
|
Método |
Quando usar |
Como funciona |
|
Automático |
Recomendado para a maioria dos cenários, pois otimiza custos |
Na ausência de um cache compatível, o sistema o gera durante a criação do pod. Pods subsequentes com as mesmas imagens reaproveitam esse cache. |
|
Manual |
Indicado quando a primeira execução exige desempenho máximo |
Crie o cache de imagem antecipadamente por meio de um modelo YAML e referencie-o ao criar o pod. |
Para criação manual, consulte Gerenciar ImageCaches e Anotações de cache de imagem. Compare as abordagens em Métodos para criar um cache de imagem.
Etapa 3: Usar um cache de imagem na criação de pods
Adicione anotações à seção metadata da especificação do pod (ou em spec.template.metadata para Deployments) para selecionar o cache desejado.
As anotações têm efeito apenas no momento da criação. Alterá-las em um pod existente não produz resultado.
Referência de anotações
O ImageCache é um recurso no nível do cluster, acessível entre diferentes namespaces.
Correspondência de imagens: Mantenha as referências de imagem idênticas às do ImageCache na especificação do pod para maximizar a taxa de acerto.
Política de pull: Defina
imagePullPolicycomoIfNotPresentpara evitar baixar novamente camadas já armazenadas em cache.
|
Anotação |
Valor de exemplo |
Padrão |
Descrição |
|
|
|
|
Ativa a correspondência automática de cache de imagem. Seleciona a melhor opção com base no grau de correspondência, tamanho e data de criação. Gera um novo cache caso não haja compatibilidade. |
|
|
|
|
Exige correspondência total entre todas as imagens do pod e o cache. Sobrescreve a configuração |
|
|
|
— |
Define a quantidade mínima de imagens do pod que devem corresponder ao cache. |
|
|
|
— |
Vincula o pod a um cache específico por ID. Esta definição tem prioridade sobre a correspondência automática. |
Prioridade das anotações: Quando imc-perfect-match e imc-match-count-request estiverem configuradas simultaneamente, prevalece a imc-perfect-match. Se você especificar eci-imc-id, ela substituirá qualquer correspondência automática.
Correspondência automática de cache de imagem (recomendado)
Ative eci-auto-imc e, opcionalmente, adicione imc-perfect-match para critérios mais rigorosos:
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-test
labels:
app: nginx
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-auto-imc: "true" # Enables automatic image cache matching
k8s.aliyun.com/imc-perfect-match: "true" # All images in the pod must fully match the cache
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
imagePullPolicy: IfNotPresent
- name: busybox
image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
command: ["sleep"]
args: ["999999"]
imagePullPolicy: IfNotPresent
Especifique um cache de imagem
O cache de imagem indicado precisa estar no estado Ready. Caso contrário, a criação do pod falhará.
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-test
labels:
app: nginx
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-imc-id: imc-2ze5tm5gehgtiiga**** # Pins to a specific image cache
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
imagePullPolicy: IfNotPresent
Aplicar anotações em massa
Use o recurso Elastic Container Instance Effect no eci-profile para aplicar as anotações de ImageCache a todos os pods correspondentes. Consulte Configure o eci-profile para usar automaticamente o recurso ImageCache.