web-dev-qa-db-ja.com

127.0.0.1:5000:getsockopt:Minikubeで接続が拒否されました

ローカルのUbuntuワークステーションでminikubeとdockerを使用すると、Minikube WebUIで次のエラーが発生します。

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.yaml

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/samples/myserver:snapshot-180717-213718-0199
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        env:
        - name: GET_HOSTS_FROM
          value: dns
        ports:
        - containerPort: 8080

そして、Dockerイメージからの出力:

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でローカルDockerイメージを使用する方法は?

私も実行しました:

eval $(minikube docker-env)

そしてこれに基づいて:

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

私が追加しました:

    "InsecureRegistry": [
        "localhost:5000",
        "127.0.0.1:5000"
    ],

to /etc/docker/daemon.json

Minikubeで画像をプルするために私が欠けているものについて何か提案はありますか?

私は以下の回答の手順に従いましたが、この手順に到達したとき:

$ 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

また、deploymentconfigを作成した後、minikubeダッシュボードで同じエラーが発生します。

BMitchからの回答に基づいて、ローカルのDockerリポジトリを作成し、それにイメージをプッシュしようとしました。

$ 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イメージを実行すると、次のようになります。

$ 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

次に、deploymentconfighello-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は私が作成したばかりのローカルレジストリを見ることが許可されていないようですか?

3
u123

コンピュータ上のlocalhostおよびlocalhostコンテキスト内で使用されるminikubeVMので問題が発生しているようです。レジストリを機能させるには、追加のポート転送を設定する必要があります。

レジストリの問題を修正するための多くの試みが原因で 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

次に、minikubeに適用します。

kubectl create -f kube-registry.yaml

Minikube内のレジストリVMが機能するかどうかをテストします:

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

マシンからプライベートレジストリを共有したい場合は、 minikube ブログエントリのローカルレジストリを共有することに興味があるかもしれません。

3
d0bry

イメージソースをローカルレジストリサーバーとして指定している場合は、そこでレジストリサーバーを実行し、イメージをそこにプッシュする必要があります。

複数のサードパーティオプションを使用してレジストリサーバーをセルフホストするか、Dockerコンテナ内にパッケージ化されている次のサーバーを実行できます: https://hub.docker.com/_/registry/

これは、TLSキーを設定するか、CAを信頼するか、他のすべてのノードに追加の安全でないレジストリを通知しない限り、単一ノード環境でのみ機能します。

ImagePullPolicyをNeverとして指定することもできます。


これらの解決策は両方ともあなたのリンクされた質問にすでにありました、そして私はあなたがこの質問でどちらかを試みたという証拠を見ていません。これらの手順をどのように試し、別の問題が発生したかを示さずに、この質問はおそらく重複として閉じる必要があります。

0
BMitch