【问题标题】:kubectl error while performing kubectl run on Ubuntu 16.04在 Ubuntu 16.04 上执行 kubectl 运行时出现 kubectl 错误
【发布时间】:2018-08-11 15:14:47
【问题描述】:

我们确实有一个私有存储库,我可以成功推送和拉取所有必需的 docker 映像。当我尝试在 kubernetes 上部署特定映像时遇到问题。以下是我正在执行的命令。

kubectl run redis --image=private repo name/redis:redis --image-pull-policy=IfNotPresent

当我运行命令kubectl describe pods <pod name> 时,我可以看到以下错误。

Warning Failed 3s (x2 over 16s) kubelet, node1 Failed 拉图像“私人回购名称/redis:redis”:rpc错误:代码= Unknown desc = 错误:状态 400 试图提取存储库 repo 名称/redis: "{\n \"errors\" : [ {\n \"status\" : 400,\n
\"message\" : \"'repo 的 docker v1 存储库请求不受支持 name'\"\n } ]\n}" 警告失败 3 秒(x2 超过 16 秒) kubelet,node1 错误:ErrImagePull

提前致谢。

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    您似乎失去了授权。 您将不得不通过文档中的“Pull Image from a Private Docker Repository”流程 - 这是一个 description,说明如何以多种方式为不同的云提供商或在本地 Kubernetes 中执行此操作。 以下是有关提供凭据的不同方法的一些有用信息:

    私人注册中心可能需要密钥才能从中读取图像。 可以通过多种方式提供凭据:

    • 使用 Google 容器注册表
      • 每个集群
      • 在 Google Compute Engine 或 Google Kubernetes Engine 上自动配置
      • 所有 pod 都可以读取项目的私有注册表
    • 使用 AWS EC2 容器注册表 (ECR)
      • 使用 IAM 角色和策略来控制对 ECR 存储库的访问
      • 自动刷新 ECR 登录凭据
    • 使用 Azure 容器注册表 (ACR)
    • 配置节点以向私有注册表进行身份验证
      • 所有 pod 都可以读取任何已配置的私有注册表
      • 需要集群管理员配置节点
    • 预拉图像
      • 所有 pod 都可以使用节点上缓存的任何图像
      • 需要对所有节点的 root 访问权限才能设置
    • 在 Pod 上指定 ImagePullSecrets
      • 只有提供自己的密钥的 pod 才能访问私有注册表。下面将更详细地描述每个选项。

    回到您看到的“不支持的 docker v1 存储库请求”错误及其背后的原因(假设您使用的 v2 存储库可能是)。是 Docker 客户端从存储库中提取图像时的工作方式。首先,如果请求返回错误(请求未经授权或图像不存在),它会向注册表发送 v2 请求,它会使用 v1 重试请求。因此它返回 v1 错误。

    【讨论】:

      猜你喜欢
      • 2016-11-11
      • 2020-10-24
      • 2017-12-30
      • 1970-01-01
      • 2020-05-15
      • 2021-07-09
      • 1970-01-01
      • 2022-10-26
      • 1970-01-01
      相关资源
      最近更新 更多