文档首页/ 云容器实例 CCI/ 常见问题/ 工作负载异常/ 事件一:重新拉取镜像失败
更新时间:2024-11-05 GMT+08:00

事件一:重新拉取镜像失败

工作负载详情中,如果事件中提示重新拉取镜像失败,请参照如下方式来排查原因。

排查项一:kubectl创建工作负载时未指定imagePullSecret

以创建一个名为nginx的deployment为例,请排查yaml文件中是否存在imagePullSecrets字段(如下yaml示例中的加粗字段),表示pull镜像时的secret名称。

需要使用容器镜像服务的镜像时,参数值固定为imagepull-secret

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  strategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:alpine
        imagePullPolicy: Always
        name: nginx
      imagePullSecrets:
        - name: imagepull-secret

排查项二:填写的镜像地址错误

CCI支持拉取容器镜像服务中的镜像来创建工作负载。

容器镜像服务中的镜像需要使用镜像的“下载指令”,上传镜像后,您可以在容器镜像服务的镜像中获取,如下图所示。

图1 镜像地址

排查项三:IAM用户没有镜像下载权限

如果您开通了企业管理,您需要在账号下的容器镜像服务中给IAM用户添加权限,IAM用户才能使用账号下的私有镜像。

给IAM用户添加权限有如下两种方法:

  • 在镜像详情中为IAM用户添加授权,授权完成后,IAM用户享有读取/编辑/管理该镜像的权限,具体请参见在镜像详情中添加授权
  • 在组织中为IAM用户添加授权,使IAM用户对组织内所有镜像享有读取/编辑/管理的权限,具体请参见在组织中添加授权

排查项四:镜像打包使用的docker版本过低

业务负载拉取镜像失败,报错信息如下:

failed to pull and unpack image "****": failed to unpack image on snapshotter devmapper: failed to extract layer

sha256:xxxxxx: failed to get reader from content store: content digest sha256:xxxxxx: not found

错误如下图所示:

图2 报错信息

该错误出现的原因:镜像构建时使用的docker版本过低(<v1.10),部分镜像打包标准社区已经不再支持。

解决方案:请使用新版本 docker 运行时(>= docker v1.11)重新构建镜像后上传到SWR(容器镜像服务),升级负载镜像版本,重新拉取即可。