2016-11-15 1 views
8

私は、Minikube、Docker Registry、およびデモノードプロジェクトを使用して、ローカルKubernetesデプロイメントを作成しようとしています。このKubernetesの展開でErrImagePullエラーが発生するのはなぜですか?

私が最初にしたのは、Docker v 1.12.3、Minikube v0.12.2のインストールでした。

その後、私は(唯一の下の最初のコマンドを実行し、this tutorial経由)、このコマンドを実行して、ドッカーレジストリコンテナを作成し

docker run -d -p 5000:5000 --name registry registry:2 

次の私は、地元のkubernetesクラスタを作成するには、このminikubeコマンドを実行した:

minikube start --vm-driver="virtualbox" --insecure-registry="0.0.0.0:5000" 

マイプロジェクト構造は次のようになります。

. 
├── Dockerfile 
└── server.js 

と私Dockerfileは次のようになります。

FROM node:7.1.0 
EXPOSE 8080 
COPY server.js . 
CMD node server.js 

は、その後、私は私自身のドッキングウィンドウのイメージを構築し、私のプライベートリポジトリにプッシュ:

docker build -t hello-node . 
docker tag hello-node localhost:5000/hello-node 
docker push localhost:5000/hello-node 

は、それから私は、このコマンドで展開を実行しようとした:

kubectl run hello-node --image=localhost:5000/hello-node --port=8888 

しかし、私はこれを取得:

sudo kubectl get pods --all-namespaces                                
NAMESPACE  NAME       READY  STATUS   RESTARTS AGE 
default  hello-node-3745105022-gzs5a 0/1  ErrImagePull 0   11m 
kube-system kube-addon-manager-minikube 1/1  Running  4   10d 
kube-system kube-dns-v20-2x64k   3/3  Running  12   10d 
kube-system kubernetes-dashboard-mjpjv 1/1  Running  4   10d 

私はドッカーレジストリ認証のいくつかの種類が不足している可能性がありますが、私はグーグルで私は理解する何かを見つけることができません。誰かが正しい方向に私を指差してくれますか?

編集

はkubernetes VMにアクセスbashにsshを使った後にして、このコマンドを使用して、私のプライベートレジストリからhello-node画像を引っ張っ:

minikube ssh 
Boot2Docker version 1.11.1, build master : 901340f - Fri Jul 1 
22:52:19 UTC 2016 
Docker version 1.11.1, build 5604cbe 
[email protected]:~$ sudo docker pull localhost:5000/hello-node 
Using default tag: latest 
Pulling repository localhost:5000/hello-node 
Error while pulling image: Get http://localhost:5000/v1/repositories/hello-node/images: dial tcp 127.0.0.1:5000: getsockopt: connection refused 

localhost:5000内で使用する正しいアドレスですkubernetesホストVM?

+0

http://stackoverflow.com/q/36874880/2051454 –

答えて

14

あなたはホスト上でレジストリを実行しているようです。実際には、VM内でレジストリを実行する必要があります。このコマンドを最初に実行することによって、ドッカークライアントをミニキューブVM内のドッカーデーモンに向けることができます。 eval $(minikube docker-env)

次に、ホスト上でdocker buildコマンドを実行できますが、VM内で構築されます。

実際にイメージのローカルバージョンを実行するだけの目的なら、eval $(minikube docker-env)をVMのドッカーデーモンに向けて実行し、ポッドYAMLにimagePullPolicy: IfNotPresentを設定する必要があります。次に、kubernetesは、利用可能であれば、ローカルに構築されたイメージを使用します。

関連する問題