Todos los productos
Search
Centro de documentos

Elastic Container Instance:Establezca una duración máxima personalizada de Pending

Última actualización: Sep 05, 2026

Los pods de Elastic Container Instance (ECI) en estado Pending generan cargos. Si un pod con errores permanece en este estado durante un periodo prolongado y no se atiende a tiempo, podrían generarse costos innecesarios. De forma predeterminada, la duración máxima de Pending para una instancia ECI es de 4 horas. Puede establecer una duración máxima personalizada de Pending según los requisitos de su negocio. El sistema finaliza automáticamente las instancias ECI que superan esta duración, lo cual evita costos innecesarios provocados por pods con errores.

Descripción general

Cada instancia ECI corresponde a un pod. Al crear un pod ECI, la facturación comienza cuando la instancia correspondiente pasa del estado Scheduling al estado Pending. Durante la fase Pending, si ocurren problemas como fallos al extraer la imagen o al montar el volumen, la instancia ECI permanece en estado Pending y continúa generando cargos. De forma predeterminada, el sistema finaliza automáticamente una instancia ECI y detiene la facturación si su duración en Pending supera las 4 horas. Si tiene requisitos de tiempo específicos, puede personalizar la duración máxima de Pending.

Importante

Cuando una instancia ECI se encuentra en estado Scheduling, Pending o Restarting, el estado del pod correspondiente (PodStatus.Phase) siempre es Pending. La duración de Pending que se puede personalizar se refiere únicamente al tiempo que una instancia ECI pasa en estado Pending. No incluye el tiempo transcurrido en los estados Scheduling o Restarting. Para obtener más información, consulte ECI pod lifecycle.

Configuración

Agregue la anotación k8s.aliyun.com/eci-max-pending-minute a los metadatos del pod para personalizar la duración máxima de Pending de la instancia ECI correspondiente.

  • El valor debe ser un número entero entre 10 y 1,440 minutos (1 día).

    Importante

    Establezca una duración máxima de Pending adecuada según los requisitos de su negocio. Si una imagen es grande y no hay caché de imágenes disponible, la extracción de la imagen puede tardar bastante tiempo. Si la duración máxima de Pending es demasiado corta, el pod podría finalizar antes de que se complete la extracción de la imagen.

  • Si no se agrega esta anotación, la duración máxima predeterminada de Pending es de 4 horas.

  • Esta anotación no aplica a un pod ECI que tenga un contenedor init en ejecución.

Una vez superada la duración máxima de Pending, el sistema genera un evento correspondiente. El estado de la instancia ECI cambia a Failed y el estado del pod (PodStatus.Phase) se determina mediante restartPolicy.

  • Si restartPolicy está configurado como Always o OnFailure, PodStatus.Phase es Pending.

  • Si restartPolicy está configurado como Never, PodStatus.Phase es Failed.

Ejemplo de configuración

  1. Cree un pod ECI con una duración máxima de Pending especificada.

    kubectl create -f pending-test.yaml

    El siguiente archivo de ejemplo pending-test.yaml simula un pod atascado en estado Pending debido a un fallo en la extracción de la imagen.

    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. Consulte el estado del pod ECI.

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

    Salida de ejemplo:

    :~$ 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. Espere a que transcurra la duración máxima de Pending especificada y luego consulte el estado y los eventos del pod ECI.

    • Dado que restartPolicy está configurado como Never, el pod entra en estado Failed después de que se agota el tiempo de espera.

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

      Salida de ejemplo:

      :~$ 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 los eventos del pod.

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

      Salida de ejemplo:

      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

    También puede usar la consola de Elastic Container Instance para comprobar si la instancia ECI se encuentra en estado Failed. En la página de detalles de la instancia, abra la pestaña Events para consultar los eventos.