Todos os produtos
Search
Central de documentação

Elastic Container Instance:Gerencie ImageCaches

Última atualização: Sep 21, 2026

Ao executar imagens de contêiner grandes ou dimensionar pods com frequência, o pull de imagens de um registro remoto pode adicionar minutos à inicialização do pod. Um ImageCache é um CustomResourceDefinition (CRD) do Kubernetes fornecido pelo Elastic Container Instance (ECI) que armazena imagens de contêiner em cache como snapshots. Quando o ECI cria um pod, ele carrega as imagens diretamente do cache, o que reduz significativamente o tempo de inicialização para imagens grandes ou workloads dimensionados com frequência.

Para que você gerencie os ImageCaches de forma eficiente, este tópico descreve como criar, consultar e excluir um ImageCache.

Um ImageCache é armazenado como um snapshot e gera custos de snapshot enquanto existir. Portanto, exclua os ImageCaches que não estiverem mais em uso.

Pré-requisitos

Antes de começar, verifique se você possui:

  • Um cluster Kubernetes com o componente ack-virtual-node instalado

  • Acesso ao cluster via kubectl

Verifique se o seu cluster oferece suporte a ImageCaches

Para continuar, execute o comando a seguir e verifique se o CRD do ImageCache está instalado:

kubectl get crd/imagecaches.eci.alibabacloud.com

Se o CRD não for encontrado, a saída será semelhante a:

Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "imagecaches.eci.alibabacloud.com" not found

Atualize o ack-virtual-node para uma versão que ofereça suporte a ImageCaches. Recomendamos que você atualize o componente ack-virtual-node para a versão mais recente para usar os novos recursos. Para obter informações sobre versões e instruções de atualização, consulte ack-virtual-node e Gerencie componentes do sistema.

Se o CRD estiver instalado, a saída será semelhante a:

NAME                               CREATED AT
imagecaches.eci.alibabacloud.com   2024-01-23T05:54:44Z

Se o CRD instalado não for a versão mais recente, aplique o manifesto do CRD atualizado:

kubectl apply -f imagecache-crd-sample.yaml

<details> <summary>Visualize imagecache-crd-sample.yaml</summary>

apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: imagecaches.eci.alibabacloud.com
spec:
  group: eci.alibabacloud.com
  version: v1
  names:
    kind: ImageCache
    plural: imagecaches
    shortNames:
    - ic
    categories:
    - all
  scope: Cluster
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      required:
      - spec
      properties:
        spec:
          type: object
          required:
          - images
          properties:
            imagePullSecrets:
              type: array
              items:
                type: string
            images:
              minItems: 1
              type: array
              items:
                type: string
            imageCacheSize:
              type: integer
            retentionDays:
              type: integer
  additionalPrinterColumns:
  - name: Age
    type: date
    JSONPath: .metadata.creationTimestamp
  - name: CacheId
    type: string
    JSONPath: .status.imageCacheId
  - name: Phase
    type: string
    JSONPath: .status.phase
  - name: Progress
    type: string
    JSONPath: .status.progress

</details>

Crie um ImageCache

Configure o manifesto YAML

Para começar, crie um arquivo YAML (por exemplo, imagecache-test.yaml) com a estrutura a seguir. Cada campo é anotado na própria linha para referência rápida.

apiVersion: eci.alibabacloud.com/v1
kind: ImageCache
metadata:
  name: imagecache-sample-test
  annotations:
    k8s.aliyun.com/imc-enable-reuse: "true"  # Enables ImageCache reuse across pods
spec:
  images:                                      # [Required] Images to cache
  - registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
  - registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
  imagePullSecrets:                            # [Optional] Secrets for private image repositories
  - default:secret1                            # Format: namespace:secretName
  - default:secret2
  - kube-system:secret3
  imageCacheSize: 25                           # [Optional] Cache size in GiB. Default: 20. Range: 20-32768.
                                               # Must be >= 2x the image size.
  retentionDays: 7                             # [Optional] Days before the cache is deleted. Default: never expires.

Referência de parâmetros:

Parâmetro

Tipo

Obrigatório

Descrição

spec.images

String[]

Sim

Imagens de contêiner a serem incluídas no cache

spec.imagePullSecrets

String[]

Não

Secrets para repositórios de imagens privadas, no formato namespace:secretName. Omita para imagens públicas.

spec.imageCacheSize

int

Não

Tamanho do cache em GiB. Padrão: 20. Intervalo válido: 20–32768. É recomendável que defina como pelo menos o dobro do tamanho da imagem.

spec.retentionDays

int

Não

Número de dias para reter o cache antes da exclusão automática. Em branco por padrão (nunca expira).

Por meio de anotações, ative recursos adicionais do ImageCache. Por exemplo, k8s.aliyun.com/imc-enable-reuse: "true" permite que vários pods compartilhem o mesmo ImageCache. Para obter a lista completa de anotações suportadas, consulte ImageCache annotations . Para a referência completa da API, consulte Kubernetes ImageCache API .

Aplique o manifesto

kubectl create -f imagecache-test.yaml

Verifique se o ImageCache está pronto

kubectl get imagecache imagecache-sample-test

O ImageCache está pronto quando PHASE exibe Ready e PROGRESS atinge 100%:

NAME                     AGE     CACHEID                    PHASE   PROGRESS
imagecache-sample-test   5m30s   imc-2ze2kbf9l1onf03z****   Ready   100%

Consulte ImageCaches

Liste todos os ImageCaches no cluster:

kubectl get imagecache

Obtenha a configuração completa e o status de um ImageCache específico:

kubectl get imagecache <imagecache-name> -o yaml

Exclua um ImageCache

kubectl delete imagecache <imagecache-name>
Um ImageCache é um snapshot. Portanto, exclua os ImageCaches que não forem mais necessários para evitar custos contínuos de snapshot.

Próximos passos