Kuectl create部署无法从本地docker中提取映像,repo连接被拒绝



我遇到了一个非常基本的错误:

  1. 我在windows10机器上安装了docker桌面和minikube
  2. 此外,我使用这里的步骤设置了一个本地docker注册表。以下是我运行docker-ps时得到的内容:
c:>docker ps
CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS              PORTS                                                                                                      NAMES
6675d2c57a74        registry:2                            "/entrypoint.sh /etc…"   7 hours ago         Up 2 hours          0.0.0.0:5000->5000/tcp                                                                                     registry
d05edc8f05b0        gcr.io/k8s-minikube/kicbase:v0.0.10   "/usr/local/bin/entr…"   8 hours ago         Up 8 hours          127.0.0.1:32771->22/tcp, 127.0.0.1:32770->2376/tcp, 127.0.0.1:32769->5000/tcp, 127.0.0.1:32768->8443/tcp   minikube
  1. 我使用docker push将本地映像推送到本地注册表,并使用docker image remove命令删除本地映像以避免任何混淆
  2. 我现在尝试提取本地注册表映像,看看它是否有效,它确实有效
docker pull localhost:5000/dev/my-web:v1
v1: Pulling from dev/my-web
Digest: sha256:b3a0cf5c66ade8d39709c0cbbd0e08c9cc5f5e1c97f039a2bd1afed657dc8b74
Status: Downloaded newer image for localhost:5000/dev/my-web:v1
localhost:5000/dev/my-web:v1

现在,我运行kubectl create命令,但它们失败了,并返回错误connection refused

C:>kubectl create deployment myweb --image=localhost:5000/dev/my-web:v1
deployment.apps/myweb created
C:>kubectl get pods
NAME                        READY   STATUS         RESTARTS   AGE
myweb-7d467f4bc4-r9xhc   0/1     ErrImagePull   0          12s

C:>kubectl describe pod/myweb-7d467f4bc4-r9xhc
Name:         myweb-7d467f4bc4-r9xhc
Namespace:    default
Priority:     0
Node:         minikube/172.17.0.3
Start Time:   Sun, 09 Aug 2020 23:30:07 -0400
Labels:       app=myweb
pod-template-hash=7d467f4bc4
Annotations:  <none>
Status:       Pending
IP:           172.18.0.3
IPs:
IP:           172.18.0.3
Controlled By:  ReplicaSet/myweb-7d467f4bc4
Containers:
my-web:
Container ID:
Image:          localhost:5000/dev/my-web:v1
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 default-token-nr7vj (ro)
Conditions:
Type              Status
Initialized       True
Ready             False
ContainersReady   False
PodScheduled      True
Volumes:
default-token-nr7vj:
Type:        Secret (a volume populated by a Secret)
SecretName:  default-token-nr7vj
Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type     Reason     Age                From               Message
----     ------     ----               ----               -------
Normal   Scheduled  93s                default-scheduler  Successfully assigned default/myweb-7d467f4bc4-r9xhc to minikube
Normal   Pulling    53s (x3 over 92s)  kubelet, minikube  Pulling image "localhost:5000/dev/my-web:v1"
Warning  Failed     53s (x3 over 92s)  kubelet, minikube  Failed to pull image "localhost:5000/dev/my-web:v1": rpc error: code = Unknown desc = Error response from daemon: Get http://localhost:5000/v2/: dial tcp 127.0.0.1:5000: connect: connection refused
Warning  Failed     53s (x3 over 92s)  kubelet, minikube  Error: ErrImagePull
Normal   BackOff    13s (x5 over 91s)  kubelet, minikube  Back-off pulling image "localhost:5000/dev/my-web:v1"
Warning  Failed     13s (x5 over 91s)  kubelet, minikube  Error: ImagePullBackOff

我不明白为什么当我尝试通过kubectl命令而不是docker pull命令时,会出现拒绝连接错误。

请帮忙。

其他注意事项:(1(我使用内置的windows系统管理程序(2(使用默认的网络

好吧,Kubernetes找不到您的注册表。这取决于你的设置,但Docker for Windows在一个虚拟机中运行,你没有指定如何运行minikube,但很可能是在另一个VM中。因此,这里可能有两个虚拟机,它们可以或不能相互通信,这取决于您如何设置它们。

localhost几乎永远不会与Kubernetes一起使用,因为在提取映像时,它总是解析为Kubernete节点的本地IP。这意味着您必须让您的注册表和kubelet在完全相同的VM上提取映像。

我只想专注于让它与运行注册表的VM IP地址一起工作,并确保您的Kubernetes VM可以访问注册表VM IP地址。此外,请记住,当您运行注册表时,您还必须在本例中公开容器端口5000

第页。S.您没有具体说明您正在运行的Hypervisor是什么?VirtualBox?VMware?你在使用桥接网络吗?仅主机❓

✌️

最新更新