【问题标题】:Kubernetes ImagePullBackOff Errors when pulling docker imagesKubernetes ImagePullBackOff 拉取 docker 镜像时出错
【发布时间】:2019-01-23 01:04:33
【问题描述】:

我在 Google Container Registry 中有一个大小为 6.5GB 的映像。当我尝试通过部署在 Kubernetes 集群节点(工作节点)上拉取映像时,会发生错误:ErrImagePull(或有时是 ImagePullBackOff)。我使用 describe 命令详细查看了错误。错误描述为无法拉取图像“gcr.io/.../..”:rpc 错误:code = Canceled desc = context cancelled 可能是什么问题以及如何缓解?

【问题讨论】:

    标签: kubernetes rpc docker-image kubernetes-pod


    【解决方案1】:

    似乎 kubelet 期望在拉取大图像期间更新进度,但目前大多数容器注册表默认情况下不提供此功能。这不是理想的行为,但似乎人们已经能够通过调整超时阅读https://github.com/kubernetes/kubernetes/issues/59376Kubernetes set a timeout limit on image pulls 上的响应来解决它

    【讨论】:

    • 第一个链接提供了将 --image-pull-progress-deadline 标志设置为更高值的解决方案。我尝试在工作节点中设置它。但错误是:读取 /var/lib/kubelet/pki/kubelet.key 时出错,证书和密钥必须成对提供。您提供的第二个链接讨论了 --runtime-request-timeout 标志。此标志现已弃用。
    • 我猜你在 node-config.yaml 的 KubeletArguments 中设置了 github.com/openshift/origin/issues/13122#issuecomment-330248646 ?您将其设置为什么值?我想知道该错误是否意味着该值无效
    • Runtime-request-timeout 仍在官方文档中 kubernetes.io/docs/reference/command-line-tools-reference/… 你有关于它被弃用的链接吗?
    • 是的,我看到 runtime-request-timeout 标志还在官方文档中。但是当我在命令行上使用它时,输出告诉我该标志已被弃用,我应该在 Kubelet 配置文件中设置它。
    • 感谢您的所有投入。我试过--image-pull-progress-deadline。我把它设置为60m。但是我不确定是否配置了,如果配置了,如何重启kubelet。我编辑了配置文件中的 runtimeRequestTimeout 字段(在 /var/lib/kubelet 中),然后提取了一个相对较小的 1.5GB 映像(之前也失败了)。已成功拉取。
    【解决方案2】:

    在启动kubelet时使用--image-pull-progress-deadline duration作为参数。

    这在kubelet documentation 中有记录。

    如果在截止日期前没有拉取进度,则取消拉取镜像。 (默认1m0s)

    【讨论】:

      猜你喜欢
      • 2020-08-30
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      • 2018-08-09
      • 1970-01-01
      • 2019-08-05
      相关资源
      最近更新 更多