首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >127.0.0.1:5000: getsockopt: Minikube拒绝连接

127.0.0.1:5000: getsockopt: Minikube拒绝连接
EN

Stack Overflow用户
提问于 2018-07-17 21:03:37
回答 3查看 12.3K关注 0票数 6

使用本地Ubuntu工作站上的minikube和docker,我在Minikube中得到以下错误:

代码语言:javascript
复制
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

在我创建了下面的部署配置之后:

代码语言:javascript
复制
kubectl apply -f hello-world-deployment.yaml

hello-world-deployment.yaml

代码语言:javascript
复制
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

以及来自码头图像的输出:

代码语言:javascript
复制
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?

我还参加了以下活动:

代码语言:javascript
复制
eval $(minikube docker-env)

基于此:

https://github.com/docker/for-win/issues/624

我补充说:

代码语言:javascript
复制
    "InsecureRegistry": [
        "localhost:5000",
        "127.0.0.1:5000"
    ],

转到/etc/docker/daemon.json

有什么建议,我错过了什么,让形象拉到工作在迷你库?

我遵循了以下回答中的步骤,但当我进入这个步骤时:

代码语言:javascript
复制
$ kubectl port-forward --namespace kube-system $(kubectl get po -n kube-system | grep kube-registry-v0 | awk '{print $1;}') 5000:5000

它就这样挂着:

代码语言:javascript
复制
$ 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的回答,我现在尝试创建一个本地停靠库,并使用以下方法将映像推送到它:

代码语言:javascript
复制
$ 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

接下来,当我拍摄码头图像时,我会得到:

代码语言:javascript
复制
$ 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更新为:

代码语言:javascript
复制
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

代码语言:javascript
复制
kubectl create -f hello-world-deployment.yaml

但在Minikube,我仍然有类似的错误:

代码语言:javascript
复制
 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是不允许看到我刚刚创建的本地注册表?

EN

回答 3

Stack Overflow用户

发布于 2018-07-18 13:58:29

看起来您在计算机上使用本地主机时遇到了问题,localhost都是在minikube 的上下文中使用的。要使注册表正常工作,您必须设置一个额外的端口转发。

如果您的小库贝安装目前由于多次尝试修复注册表问题而中断,我建议重新启动minikube环境:

代码语言:javascript
复制
minikube stop && minikube delete && rm -fr $HOME/.minikube &&  minikube start

接下来,获取kube注册表yaml文件:

代码语言:javascript
复制
curl -O https://gist.githubusercontent.com/coco98/b750b3debc6d517308596c248daf3bb1/raw/6efc11eb8c2dce167ba0a5e557833cc4ff38fa7c/kube-registry.yaml

然后,把它应用到迷你车上:

代码语言:javascript
复制
kubectl create -f kube-registry.yaml

测试minikube中的注册表是否工作:

代码语言:javascript
复制
minikube ssh && curl localhost:5000

在Ubuntu上,将端口转发到5000端口的注册表:

代码语言:javascript
复制
kubectl port-forward --namespace kube-system $(kubectl get po -n kube-system | grep kube-registry-v0 | awk '{print $1;}') 5000:5000

如果您想在您的机器上共享您的私有注册表,您可能对共享迷你库的本地注册表博客条目感兴趣。

票数 5
EN

Stack Overflow用户

发布于 2018-07-21 09:19:57

如果要将映像源指定为本地注册表服务器,则需要在那里运行注册表服务器,并将图像推送到它。

您可以使用多个第三方选项自托管注册表服务器,也可以运行打包在码头容器中的注册表服务器:/登记册/

这只适用于单个节点环境,除非您设置了TLS键,信任CA,或者告诉其他不安全注册表的所有其他节点。

您还可以将imagePullPolicy指定为从不。

这两种解决方案都已经在你的相关问题中了,我没有看到你在这个问题上尝试的任何证据。没有展示您是如何尝试这些步骤的,并且遇到了不同的问题,这个问题可能应该作为一个重复来结束。

票数 0
EN

Stack Overflow用户

发布于 2022-06-28 17:49:48

从您的问题中还不清楚您有多少节点?

如果您有多个副本,那么您的问题是在使用副本进行部署时: 1.

如果没有,请忽略这个答案。

你不知道那个复制品会在哪里和什么地方。因此,如果您没有在所有节点上都有对接器本地注册中心,而库伯内特斯试图使用没有停靠器注册表的某个节点,则最终会出现该错误。

同样的事情也发生在我身上,同样的错误connection refused,因为部署到没有本地停靠器注册中心的节点。

当我输入这个时,我认为这可以用入口来解决。您可以将注册表作为部署,添加服务,为图像添加卷,并将其放到ingress中。

稍微多一点的工作,但至少所有的节点将同步(所有您的豆荚对不起)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51390161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档