Todos os produtos
Search
Central de documentação

Elastic Container Instance:Definir uma duração máxima personalizada de Pending

Última atualização: Jun 27, 2026

Pods do Elastic Container Instance (ECI) no estado Pending geram cobranças. Se um pod anormal permanecer em Pending por muito tempo sem o devido tratamento, você poderá incorrer em custos desnecessários. Por padrão, a duração máxima de Pending para uma instância ECI é de 4 horas. Defina uma duração máxima personalizada conforme as necessidades do seu negócio. O sistema encerra automaticamente as instâncias ECI que ultrapassam esse limite e evita gastos indevidos causados por pods com falha.

Visão geral

Cada instância ECI corresponde a um pod. Ao criar um pod ECI, o faturamento começa quando a instância ECI correspondente passa do estado Scheduling para o estado Pending. Durante a fase Pending, problemas como falhas no pull da imagem ou na montagem do volume mantêm a instância ECI nesse estado e geram cobrança contínua. Caso a duração de Pending exceda 4 horas, o sistema encerra automaticamente a instância ECI e interrompe o faturamento. Para requisitos de tempo específicos, personalize a duração máxima de Pending.

Importante

Quando uma instância ECI está nos estados Scheduling, Pending ou Restarting, o status do pod correspondente (PodStatus.Phase) é sempre Pending. A duração personalizável de Pending refere-se apenas ao tempo que a instância ECI permanece no estado Pending. Ela não inclui os períodos nos estados Scheduling ou Restarting. Para mais informações, consulte Ciclo de vida do pod ECI.

Configuração

Adicione a anotação k8s.aliyun.com/eci-max-pending-minute aos metadados do pod para personalizar a duração máxima de Pending da instância ECI correspondente.

  • O valor deve ser um número inteiro entre 10 e 1.440 minutos (1 dia).

    Importante

    Defina uma duração máxima de Pending adequada às necessidades do seu negócio. Imagens grandes sem cache disponível podem levar bastante tempo para serem baixadas. Se o limite for muito curto, o pod pode ser encerrado antes da conclusão do pull da imagem.

  • Sem essa anotação, a duração máxima padrão de Pending é de 4 horas.

  • Essa anotação não se aplica a pods ECI com init containers em execução.

Ao ultrapassar a duração máxima de Pending, o sistema registra um evento correspondente. O status da instância ECI muda para Failed, e o status do pod (PodStatus.Phase) depende da configuração de restartPolicy.

  • Se restartPolicy estiver definido como Always ou OnFailure, PodStatus.Phase será Pending.

  • Se restartPolicy estiver definido como Never, PodStatus.Phase será Failed.

Exemplo de configuração

  1. Crie um pod ECI com uma duração máxima de Pending especificada.

    kubectl create -f pending-test.yaml

    O arquivo de exemplo pending-test.yaml abaixo simula um pod preso no estado Pending devido a uma falha no pull da imagem.

    apiVersion: v1
    kind: Pod
    metadata:
      name: pending-test
      labels:
        alibabacloud.com/eci: "true"
      annotations:
        k8s.aliyun.com/eci-max-pending-minute: "10"    # Set the maximum Pending duration to 10 minutes.
    spec:
      containers:
      - image: test****-registry.example.com/eci_test/nginx:1.0  # Use a private image to simulate an image pull failure. Replace the image with your actual image.
        name: test-container
      restartPolicy: Never  # Set the restart policy to Never.
  2. Verifique o status do pod ECI.

    kubectl get pod <pod-name> -o=jsonpath='{.status.phase}'

    Saída de exemplo:

    :~$ kubectl get pod
    NAME            READY   STATUS             RESTARTS   AGE
    pending-test    0/1     ImagePullBackOff   0          25s
    :~$ kubectl get pod pending-test -o=jsonpath='{.status.phase}'
    Pending
  3. Aguarde o término da duração máxima de Pending especificada e verifique o status e os eventos do pod ECI.

    • Como restartPolicy está definido como Never, o pod entra no estado Failed após o tempo limite.

      kubectl get pod <pod-name> -o=jsonpath='{.status.phase}'

      Saída de exemplo:

      :~$ kubectl get pod
      NAME             READY   STATUS                              RESTARTS   AGE
      pending-test     0/1     ContainerInstanceStartingFailed     0          15m
      :~$ kubectl get pod pending-test -o=jsonpath='{.status.phase}'
      Failed
    • Consulte os eventos do pod.

      kubectl get events --field-selector involvedObject.name=<pod-name>

      Saída de exemplo:

      Warning   Failed           pod/pending-test   Error: ErrImagePull
      Normal    BackOff          pod/pending-test   Back-off pulling image "test xxx om/eci_test/nginx:1.0"
      Warning   Failed           pod/pending-test   Error: ImagePullBackOff
      Warning   StartingFailed   pod/pending-test   [eci.containergroup]eci starting failed: The Eci pod stuck in Pending exceed eci-max-pending-minute 10, will be released.
    Nota

    Você também pode usar o console do Elastic Container Instance para verificar se a instância ECI está no estado Failed. Na página de detalhes da instância, abra a aba Events para visualizar os eventos.