ローカルの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は私が作成したばかりのローカルレジストリを見ることが許可されていないようですか?
コンピュータ上の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 ブログエントリのローカルレジストリを共有することに興味があるかもしれません。
イメージソースをローカルレジストリサーバーとして指定している場合は、そこでレジストリサーバーを実行し、イメージをそこにプッシュする必要があります。
複数のサードパーティオプションを使用してレジストリサーバーをセルフホストするか、Dockerコンテナ内にパッケージ化されている次のサーバーを実行できます: https://hub.docker.com/_/registry/
これは、TLSキーを設定するか、CAを信頼するか、他のすべてのノードに追加の安全でないレジストリを通知しない限り、単一ノード環境でのみ機能します。
ImagePullPolicyをNeverとして指定することもできます。
これらの解決策は両方ともあなたのリンクされた質問にすでにありました、そして私はあなたがこの質問でどちらかを試みたという証拠を見ていません。これらの手順をどのように試し、別の問題が発生したかを示さずに、この質問はおそらく重複として閉じる必要があります。