google 容器引擎在从容器注册表中拉取镜像时遇到问题

google container engine having problems pulling image from container registry

我正在尝试在 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"

其他看起来几乎相同但使用不同图像的部署正在按预期工作。我要拉的图像有什么问题?我怎样才能 debug/fix 这个?

这可能是由于 known docker bug where shutdown occurs before the content is synced to disk on layer creation. The fix 包含在 docker v1.13 中。

一个临时解决方法sugguested是删除目录中的空文件,然后重新拉取镜像。