web-dev-qa-db-ja.com

ローカル画像を取得してKubernetesでポッドを実行する

Dockerfileによって作成された次の画像があります。

REPOSITORY   TAG      IMAGE ID       CREATED       SIZE 
Ruby/lab     latest   f1903b1508cb   2 hours ago   729.6 MB

そして、次のYAMLファイルがあります:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: Ruby-deployment
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: Ruby
    spec:
      containers:
      - name: Ruby-app
        image: Ruby/lab
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 4567

展開を作成すると、ポッドに次の情報が表示されます。

Ruby-deployment-3830038651-sa4ii   0/1       ImagePullBackOff   0          7m
Ruby-deployment-3830038651-u1tvc   0/1       ImagePullBackOff   0          7m

そして、下からのエラーFailed to pull image "Ruby/lab:latest": Error: image Ruby/lab not found

 8m            2m              6       {kubelet minikube}      spec.containers{Ruby}   Normal          Pulling         pulling image "Ruby/lab:latest"
 8m            2m              6       {kubelet minikube}      spec.containers{Ruby}   Warning         Failed          Failed to pull image "Ruby/lab:latest": Error: image Ruby/lab not found
 8m            2m              6       {kubelet minikube}                              Warning         FailedSync      Error syncing pod, skipping: failed to "StartContainer" for "Ruby" with ErrImagePull: "Error: image Ruby/lab not found"

これには、Dockerにレジストリが必要ですか?ローカルでテストを行い、テストのためにコード/レポを友人に渡したいだけです

ありがとう

42
CPB

実行することにより、DockerクライアントをVMのdockerデーモンに向けることができます。

eval $(minikube docker-env)

その後、通常どおりイメージを構築し、kubectlを使用して通常kubernetesリソースを作成できます。あなたが持っていることを確認してください

imagePullPolicy: IfNotPresent

yAMLまたはJSON仕様で。

さらに、安全でないレジストリをminikube VMに渡すためのフラグがあります。ただし、これは、マシンを初めて作成するときに指定する必要があります。

minikube start --insecure-registry

また、プライベートレジストリを使用するときにこれを読むこともできます http://kubernetes.io/docs/user-guide/images/

65
Matt Rickard

AFAIR minikubeはVMで実行されるため、ホストマシンでローカルに構築した画像は表示されませんが、... https://github.com/kubernetes/ minikube/blob/master/docs/reusing_the_docker_daemon.mdeval $(minikube docker-env)を使用して、実際にminikubeで実行されているDockerデーモンを利用できます。外部レジストリからプルしないk8sエンジン

docker pullは、すべてのノードですべての画像を手動でプルするか、DaemonSetを実行してすべての画像をプルします

0
shenyan