【问题标题】:Can not pull any image in minikube无法在 minikube 中拉取任何图像
【发布时间】:2022-08-05 20:38:19
【问题描述】:

我在 macOS 上使用 minikubehyperkit 驱动程序:minikube start --driver=hyperkit

一切似乎都很好......

minikube status

minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

minikube version

minikube version: v1.24.0

kubectl version:

Client Version: version.Info{Major:\"1\", Minor:\"22\", GitVersion:\"v1.22.4\", GitCommit:\"b695d79d4f967c403a96986f1750a35eb75e75f1\", GitTreeState:\"clean\", BuildDate:\"2021-11-17T15:48:33Z\", GoVersion:\"go1.16.10\", Compiler:\"gc\", Platform:\"darwin/amd64\"}
Server Version: version.Info{Major:\"1\", Minor:\"22\", GitVersion:\"v1.22.3\", GitCommit:\"c92036820499fedefec0f847e2054d824aea6cd1\", GitTreeState:\"clean\", BuildDate:\"2021-10-27T18:35:25Z\", GoVersion:\"go1.16.9\", Compiler:\"gc\", Platform:\"linux/amd64\"}

kubectl get no:

NAME       STATUS   ROLES                  AGE   VERSION
minikube   Ready    control-plane,master   13m   v1.22.3

我的问题是当我部署任何东西时,它不会拉任何图像......

例如:

kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4

然后kubectl get pods:

NAME                              READY   STATUS             RESTARTS   AGE
hello-minikube-6ddfcc9757-nfc64   0/1     ImagePullBackOff   0          13m

然后我试图找出问题所在?

k describe pod/hello-minikube-6ddfcc9757-nfc64

结果如下:

Name:         hello-minikube-6ddfcc9757-nfc64
Namespace:    default
Priority:     0
Node:         minikube/192.168.64.8
Start Time:   Sun, 16 Jan 2022 10:49:27 +0330
Labels:       app=hello-minikube
              pod-template-hash=6ddfcc9757
Annotations:  <none>
Status:       Pending
IP:           172.17.0.5
IPs:
  IP:           172.17.0.5
Controlled By:  ReplicaSet/hello-minikube-6ddfcc9757
Containers:
  echoserver:
    Container ID:   
    Image:          k8s.gcr.io/echoserver:1.4
    Image ID:       
    Port:           <none>
    Host Port:      <none>
    State:          Waiting
      Reason:       ImagePullBackOff
    Ready:          False
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-k5qql (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             False 
  ContainersReady   False 
  PodScheduled      True 
Volumes:
  kube-api-access-k5qql:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason     Age                   From               Message
  ----     ------     ----                  ----               -------
  Normal   Scheduled  18m                   default-scheduler  Successfully assigned default/hello-minikube-6ddfcc9757-nfc64 to minikube
  Normal   Pulling    16m (x4 over 18m)     kubelet            Pulling image \"k8s.gcr.io/echoserver:1.4\"
  Warning  Failed     16m (x4 over 18m)     kubelet            Failed to pull image \"k8s.gcr.io/echoserver:1.4\": rpc error: code = Unknown desc = Error response from daemon: Get \"https://k8s.gcr.io/v2/\": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
  Warning  Failed     16m (x4 over 18m)     kubelet            Error: ErrImagePull
  Warning  Failed     15m (x6 over 18m)     kubelet            Error: ImagePullBackOff
  Normal   BackOff    3m34s (x59 over 18m)  kubelet            Back-off pulling image \"k8s.gcr.io/echoserver:1.4\"

然后尝试获取一些日志!:

k logs pod/hello-minikube-6ddfcc9757-nfc64k logs deploy/hello-minikube

两者都返回相同的结果:

Error from server (BadRequest): container \"echoserver\" in pod \"hello-minikube-6ddfcc9757-nfc64\" is waiting to start: trying and failing to pull image

此部署是来自 minikube documentation 的示例

但我不知道为什么它不拉任何图像......

  • 我发现here 类似的错误。那里提供的解决方案有帮助吗?
  • 你好@kkopczak,我好久没来了,抱歉。不幸的是,那篇文章中的答案并没有解决我的问题,因为我仍然无法提取任何图像......但无论如何感谢您的回复。

标签: kubernetes minikube hyperkit


【解决方案1】:

根据this article

ImagePullBackOff 状态表示 Pod 无法启动,因为 Kubernetes 无法拉取容器镜像。 “BackOff”部分意味着 Kubernetes 将继续尝试拉取镜像,并增加延迟(“back-off”)。

Here 也是一本关于将图像推送到 minikube 集群的手册。

This handbook 描述了您的问题:

无法拉取图像..Client.Timeout 在等待标头时超出

Unable to pull images, which may be OK:

failed to pull image "k8s.gcr.io/kube-apiserver:v1.13.3": output: Error response from daemon:
Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection
(Client.Timeout exceeded while awaiting headers)

此错误表示在 VM 中运行的容器运行时无法访问 Internet。

possible workarounds

【讨论】:

  • 你好@wytrzymaływiktor 不幸的是,我仍然无法提取任何图像......我实际上知道我无法提取任何图像可能是因为我的 pod 无法访问互联网,但我不知道为什么?我该如何解决?我测试了 docker-desktop 并且没问题,我也尝试了使用和不使用 VPN 的 minikube,但我的问题仍然存在......(我也尝试多次删除并重新安装 minikube,但仍然没有任何改变...... )
  • 您是否尝试过我链接的可能解决方法?
【解决方案2】:

我遇到了一些类似的问题,它是通过使用 echoserver:1.10 而不是 echoserver:1.4 修复的

【讨论】:

  • 这并没有真正回答这个问题。如果您有其他问题,可以点击 提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review
【解决方案3】:

我有完全相同的问题。 我发现我的互联网连接很慢, 拉取图像的超时时间为 120 秒,因此 kubectl 无法在 120 秒内拉取图像。

首先使用docker拉取你需要的镜像 例如:

docker pull k8s.gcr.io/echoserver:1.4

然后一切都会正常工作,因为现在 kubectl 将使用本地存储的图像。

【讨论】:

    猜你喜欢
    • 2019-11-24
    • 2023-04-03
    • 2019-09-30
    • 2018-04-13
    • 2019-07-15
    • 2020-06-18
    • 2022-01-16
    • 1970-01-01
    • 2021-08-01
    相关资源
    最近更新 更多