使用本地Ubuntu工作站上的minikube和docker,我在Minikube中得到以下错误:
Failed to pull image "localhost:5000/samples/myserver:snapshot-180717-213718-0199": rpc error: code = Unknown desc = Error response from daemon: Get http://localhost:5000/v2/: dial tcp 127.0.0.1:5000: getsockopt: connection refused在我创建了下面的部署配置之后:
kubectl apply -f hello-world-deployment.yamlhello-world-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: hello-world
spec:
replicas: 1
template:
metadata:
labels:
app: hello-world
tier: backend
spec:
containers:
- name: hello-world
image: localhost:5000/samples/myserver:snapshot-180717-213718-0199
resources:
requests:
cpu: 100m
memory: 100Mi
env:
- name: GET_HOSTS_FROM
value: dns
ports:
- containerPort: 8080以及来自码头图像的输出:
REPOSITORY TAG IMAGE ID CREATED SIZE
samples/myserver latest aa0a1388cd88 About an hour ago 435MB
samples/myserver snapshot-180717-213718-0199 aa0a1388cd88 About an hour ago 435MB
k8s.gcr.io/kube-proxy-amd64 v1.10.0 bfc21aadc7d3 3 months ago 97MB基于本指南:如何使用本地码头图像与Minikube?
我还参加了以下活动:
eval $(minikube docker-env)基于此:
https://github.com/docker/for-win/issues/624
我补充说:
"InsecureRegistry": [
"localhost:5000",
"127.0.0.1:5000"
],转到/etc/docker/daemon.json
有什么建议,我错过了什么,让形象拉到工作在迷你库?
我遵循了以下回答中的步骤,但当我进入这个步骤时:
$ kubectl port-forward --namespace kube-system $(kubectl get po -n kube-system | grep kube-registry-v0 | awk '{print $1;}') 5000:5000它就这样挂着:
$ kubectl port-forward --namespace kube-system $(kubectl get po -n kube-system | grep kube-registry-v0 | awk '{print $1;}') 5000:5000
Forwarding from 127.0.0.1:5000 -> 5000
Forwarding from [::1]:5000 -> 5000在我创建了部署配置之后,我在minikube仪表板上得到了同样的错误。
基于BMitch的回答,我现在尝试创建一个本地停靠库,并使用以下方法将映像推送到它:
$ docker run -d -p 5000:5000 --restart always --name registry registry:2
$ docker pull ubuntu
$ docker tag ubuntu localhost:5000/ubuntu:v1
$ docker push localhost:5000/ubuntu:v1接下来,当我拍摄码头图像时,我会得到:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 74f8760a2a8b 4 days ago 82.4MB
localhost:5000/ubuntu v1 74f8760a2a8b 4 days ago 82.4MB然后,我将我的部署配置hello-world-deployment.yaml更新为:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: hello-world
spec:
replicas: 1
template:
metadata:
labels:
app: hello-world
tier: backend
spec:
containers:
- name: hello-world
image: localhost:5000/ubuntu:v1
resources:
requests:
cpu: 100m
memory: 100Mi
env:
- name: GET_HOSTS_FROM
value: dns
ports:
- containerPort: 8080和
kubectl create -f hello-world-deployment.yaml但在Minikube,我仍然有类似的错误:
Failed to pull image "localhost:5000/ubuntu:v1": rpc error: code = Unknown desc = Error response from daemon: Get http://localhost:5000/v2/: dial tcp 127.0.0.1:5000: getsockopt: connection refused 那么,看来Minikube是不允许看到我刚刚创建的本地注册表?
发布于 2018-07-18 13:58:29
看起来您在计算机上使用本地主机时遇到了问题,和localhost都是在minikube 的上下文中使用的。要使注册表正常工作,您必须设置一个额外的端口转发。
如果您的小库贝安装目前由于多次尝试修复注册表问题而中断,我建议重新启动minikube环境:
minikube stop && minikube delete && rm -fr $HOME/.minikube && minikube start接下来,获取kube注册表yaml文件:
curl -O https://gist.githubusercontent.com/coco98/b750b3debc6d517308596c248daf3bb1/raw/6efc11eb8c2dce167ba0a5e557833cc4ff38fa7c/kube-registry.yaml然后,把它应用到迷你车上:
kubectl create -f kube-registry.yaml测试minikube中的注册表是否工作:
minikube ssh && curl localhost:5000在Ubuntu上,将端口转发到5000端口的注册表:
kubectl port-forward --namespace kube-system $(kubectl get po -n kube-system | grep kube-registry-v0 | awk '{print $1;}') 5000:5000如果您想在您的机器上共享您的私有注册表,您可能对共享迷你库的本地注册表博客条目感兴趣。
发布于 2018-07-21 09:19:57
如果要将映像源指定为本地注册表服务器,则需要在那里运行注册表服务器,并将图像推送到它。
您可以使用多个第三方选项自托管注册表服务器,也可以运行打包在码头容器中的注册表服务器:/登记册/。
这只适用于单个节点环境,除非您设置了TLS键,信任CA,或者告诉其他不安全注册表的所有其他节点。
您还可以将imagePullPolicy指定为从不。
这两种解决方案都已经在你的相关问题中了,我没有看到你在这个问题上尝试的任何证据。没有展示您是如何尝试这些步骤的,并且遇到了不同的问题,这个问题可能应该作为一个重复来结束。
发布于 2022-06-28 17:49:48
从您的问题中还不清楚您有多少节点?
如果您有多个副本,那么您的问题是在使用副本进行部署时: 1.
如果没有,请忽略这个答案。
你不知道那个复制品会在哪里和什么地方。因此,如果您没有在所有节点上都有对接器本地注册中心,而库伯内特斯试图使用没有停靠器注册表的某个节点,则最终会出现该错误。
同样的事情也发生在我身上,同样的错误connection refused,因为部署到没有本地停靠器注册中心的节点。
当我输入这个时,我认为这可以用入口来解决。您可以将注册表作为部署,添加服务,为图像添加卷,并将其放到ingress中。
稍微多一点的工作,但至少所有的节点将同步(所有您的豆荚对不起)。
https://stackoverflow.com/questions/51390161
复制相似问题