Kubectl创建部署无法从本地docker repo连接中提取映像被拒绝
我遇到了一个非常基本的错误:Kubectl创建部署无法从本地docker repo连接中提取映像被拒绝,docker,kubernetes,kubectl,docker-registry,Docker,Kubernetes,Kubectl,Docker Registry,我遇到了一个非常基本的错误: 我在windows 10机器上安装了docker desktop和minikube 此外,我还使用以下步骤设置了一个本地docker注册表。 以下是我运行docker ps时得到的: 我使用docker push将本地映像推送到本地注册表,并使用docker image remove命令删除本地映像以避免任何混淆 我现在尝试拉本地注册表图像,看看它是否有效,它确实有效 现在我运行kubectl create命令,它们失败,出现错误连接被拒绝 kubectl创建部署m
docker push
将本地映像推送到本地注册表,并使用docker image remove
命令删除本地映像以避免任何混淆连接被拒绝
kubectl创建部署myweb--image=localhost:5000/dev/myweb:v1
deployment.apps/myweb已创建
C:\>kubectl得到豆荚
名称就绪状态重新启动
myweb-7d467f4bc4-r9xhc 0/1错误图像拉取0 12s
C:\>kubectl描述pod/myweb-7d467f4bc4-r9xhc
名称:myweb-7d467f4bc4-r9xhc
名称空间:默认值
优先级:0
节点:minikube/172.17.0.3
开始时间:2020年8月9日星期日23:30:07-0400
标签:app=myweb
pod模板哈希=7d467f4bc4
注释:
状态:待定
IP:172.18.0.3
IPs:
IP:172.18.0.3
控制人:ReplicaSet/myweb-7d467f4bc4
容器:
我的网站:
容器ID:
图片:localhost:5000/dev/myweb:v1
图像ID:
端口:
主机端口:
国家:等待
原因:图像拉回
就绪:错误
重新启动计数:0
环境:
挂载:
/来自default-token-nr7vj(ro)的var/run/secrets/kubernetes.io/serviceCount
条件:
类型状态
初始化为True
准备错误
集装箱准备好了吗
播客预定为真
卷数:
default-token-nr7vj:
类型:Secret(由Secret填充的卷)
SecretName:default-token-nr7vj
可选:false
QoS等级:最佳努力
节点选择器:
容差:node.kubernetes.io/未就绪:不执行300秒
node.kubernetes.io/不可访问:不执行300秒
活动:
从消息中键入原因年龄
---- ------ ---- ---- -------
正常计划的93s默认计划程序已成功将default/myweb-7d467f4bc4-r9xhc分配给minikube
正常拉动53秒(x3/92秒)kubelet,minikube拉动图像“localhost:5000/dev/my-web:v1”
警告失败53s(x3/92s)kubelet,minikube无法从守护进程获取映像“localhost:5000/dev/my-web:v1”:rpc错误:code=Unknown desc=错误响应:Gethttp://localhost:5000/v2/: 拨打tcp 127.0.0.1:5000:连接:连接被拒绝
警告失败53s(x3超过92s)kubelet,minikube错误:ErrImagePull
正常回退13秒(x5/91s)kubelet,minikube回退图像“localhost:5000/dev/my-web:v1”
警告失败13秒(x5超过91秒)kubelet,minikube错误:ImagePullBackOff
当我尝试使用kubectl
命令而不是docker pull
命令时,我无法理解为什么会出现连接拒绝错误
请帮忙
其他注意事项:(1)我正在使用内置windows系统管理程序(2)使用默认网络嗯,Kubernetes找不到您的注册表。这取决于您的设置,但Docker for Windows在虚拟机中运行,您没有指定如何运行minikube,但很可能在另一个虚拟机中运行。因此,这里可能有两个虚拟机,它们可以或不能相互通信,具体取决于您如何设置它们 而
localhost
几乎永远不会与Kubernetes一起工作,因为在提取映像时,它总是解析为Kubernetes节点的本地IP。这意味着您必须让您的注册表和kubelet在完全相同的VM上拖动映像
我只想让它与注册表运行的VM IP地址一起工作,并确保Kubernetes VM可以访问注册表VM IP地址。另外,请记住,在运行注册表时,您还必须公开容器端口,在这种情况下5000
另外,您没有指定您正在运行的虚拟机监控程序?虚拟箱?VMware?你在使用桥接网络吗?仅主机❓
✌️ 我现在更新了我的问题。是的,它们在两个独立的容器中运行。如何确保minkube容器可以访问注册表VM IP?它们是否都在同一个VM上运行?
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
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