У движка контейнера Google возникли проблемы с извлечением изображения из реестра контейнера.

Я пытаюсь создать развертывание на GKE (под управлением 1.6.0), которое выглядит так:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-api
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: api
    spec:
      containers:
        - name: api
          image: eu.gcr.io/<PROJECT>/<IMAGE>:latest
          imagePullPolicy: Always
          ports:
            - containerPort: 3000
          env:
            - name: NODE_ENV
              value: production
          resources:
            requests:
              cpu: 100m

Создание этого происходит со следующим сообщением об ошибке:

Failed to pull image "eu.gcr.io/<PROJECT>/<IMAGE>:latest": rpc error: code = 2 desc = failed to register layer: rename /var/lib/docker/image/overlay/layerdb/tmp/layer-629814250 /var/lib/docker/image/overlay/layerdb/sha256/bd2793152ee77e9d503e981352ff16122b220968ce9df1cc3b49b9704d7dfe28: directory not empty
Error syncing pod, skipping: failed to "StartContainer" for "api" with ErrImagePull: "rpc error: code = 2 desc = failed to register layer: rename /var/lib/docker/image/overlay/layerdb/tmp/layer-629814250 /var/lib/docker/image/overlay/layerdb/sha256/bd2793152ee77e9d503e981352ff16122b220968ce9df1cc3b49b9704d7dfe28: directory not empty"

Другие развертывания, которые выглядят почти одинаково, но используют другой образ, работают как положено. Что не так с изображением, которое я пытаюсь вытащить? И как я могу отладить / исправить это?

1 ответ

Решение

Это может быть вызвано известной ошибкой докера, когда завершение работы происходит до того, как содержимое синхронизируется с диском при создании слоя. Исправление включено в Docker v1.13.

Один временный обходной путь - удаление пустых файлов в каталоге и повторное извлечение образа.

Другие вопросы по тегам