gpt4 book ai didi

docker - kubectl create deployment 无法从本地 docker repo 连接中拉取镜像被拒绝

转载 作者:行者123 更新时间:2023-12-02 11:42:12 37 4
gpt4 key购买 nike

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

  1. 我在我的 Windows 10 机器上安装了 docker-desktop 和 minikube。
  2. 此外,我使用以下步骤设置本地 docker 注册表 here .这是我运行 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 找不到您的注册表。这取决于您的设置,但是适用于 Windows 的 Docker 在 VM 中运行并且您没有指定如何运行 minikube,但很可能是在另一个 VM 中。因此,在这里您可能有两个虚拟机,它们可以或不能相互通信,具体取决于您如何设置它们。

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

我只会专注于让它与运行注册表的 VM IP 地址一起使用,并确保您的 Kubernetes VM 可以访问注册表 VM IP 地址。另外,请记住,当您运行注册表时,您还必须公开您的容器端口,在这种情况下 5000

附言您没有指定正在运行的 Hypervisor?虚拟盒子?威睿?你在使用桥接网络吗?仅限主持人❓

✌️<​​/p>

关于docker - kubectl create deployment 无法从本地 docker repo 连接中拉取镜像被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63333916/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com