首页 > 解决方案 > kubernetes 无法从 docker-hub 的私有存储库中提取大图像

问题描述

最近我开始在我的 kubernetes 集群中使用 docker-hub 中的私有存储库。

我的 kubernetes 集群版本是 1.9.2 ( kubelet , kubeadm , kubectl )

我的 kubernetes 集群有大约 12 个部署,它们都在默认命名空间中。

我还创建了一个 docker 注册表秘密:

kubectl create secret docker-registry registrykey ..

我将它修补到默认命名空间中:

kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "registrykey"}]}' 

我所有的部署都运行良好,除了一个不断给我 ImagePullBackOff

当我试图描述它时,我得到:

 Normal   BackOff  29m (x6112 over 1d)  kubelet, node1  Back-off pulling image "registry.hub.docker.com/my-image"
  Warning  Failed   19m (x6155 over 1d)  kubelet, node1  Error: ImagePullBackOff
  Warning  Failed   14m (x287 over 1d)   kubelet, node1  Failed to pull image "registry.hub.docker.com/my-image": rpc error: code = Unknown desc = Error response from daemon: repository registry.hub.docker.com/my-image not found: does not exist or no pull access
  Normal   Pulling  3m (x289 over 1d)    kubelet, node1  pulling image "registry.hub.docker.com/my-image"

我尝试向 kubelet 服务添加以下标志:

--image-pull-progress-deadline=5m --serialize-image-pulls=false

我还添加了 docker 服务以下标志: --max-concurrent-downloads=10

拉仍然失败。

图像大小为 1.56 giga。

如果我通过 docker pull 手动拉它并更改imagePullPolicy: AlwaysimagePullPolicy: IfNotPresent,它可以工作。因为我不想在每次部署时都手动执行此操作。

任何想法为什么会发生以及如何解决它都将受到欢迎。

非常感谢

编辑:添加服务帐户 yaml:

apiVersion: v1
imagePullSecrets:
- name: registrykey
kind: ServiceAccount
metadata:
  creationTimestamp: 2018-09-04T06:55:04Z
  name: default
  namespace: default
  resourceVersion: "11698"
  selfLink: /api/v1/namespaces/default/serviceaccounts/default
  uid: 73c55e52-b00f-11e8-afec-0050569e63f0
secrets:
- name: default-token-ptx9l

和秘密:

apiVersion: v1
data:
  .dockerconfigjson: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
kind: Secret
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","data":{".dockerconfigjson":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},"kind":"Secret","metadata":{"annotations":{},"creationTimestamp":null,"name":"registrykey","namespace":"default"},"type":"kubernetes.io/dockerconfigjson"}
  creationTimestamp: 2018-09-04T08:41:40Z
  name: registrykey
  namespace: default
  resourceVersion: "11689"
  selfLink: /api/v1/namespaces/default/secrets/registrykey
  uid: 57ebf775-b01e-11e8-a16b-0050569e63f0
type: kubernetes.io/dockerconfigjson

我正在使用 docker hub 私有存储库

我还是很绝望。有没有人遇到过这种行为?

标签: dockerkubernetesdocker-registry

解决方案


推荐阅读