web-dev-qa-db-ja.com

kubernetesはローカルイメージをプルできません

テストのために1台のマシンでkubernetesを使用しています。nginxDockerイメージからカスタムイメージを作成しましたが、kubernetesでイメージを使用しようとすると、イメージプルエラーが発生します。

MY POD YAML

kind: Pod
apiVersion: v1
metadata:
  name: yumserver
  labels:
    name: frontendhttp
spec:
  containers:
    - name: myfrontend
      image: my/nginx:latest
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
      - mountPath: "/usr/share/nginx/html"
        name: mypd
  imagePullSecrets:
    - name: myregistrykey

  volumes:
    - name: mypd
      persistentVolumeClaim:
       claimName: myclaim-1

MY KUBERNETESコマンド

kubectl create -f pod-yumserver.yaml

エラー

kubectl describe pod yumserver


Name: yumserver
Namespace: default
Image(s):   my/nginx:latest
Node:       127.0.0.1/127.0.0.1
Start Time: Tue, 26 Apr 2016 16:31:42 +0100
Labels:     name=frontendhttp
Status:     Pending
Reason:     
Message:    
IP:     172.17.0.2
Controllers:    <none>
Containers:
  myfrontend:
    Container ID:   
    Image:      my/nginx:latest
    Image ID:       
    QoS Tier:
      memory:       BestEffort
      cpu:      BestEffort
    State:      Waiting
      Reason:       ErrImagePull
    Ready:      False
    Restart Count:  0
    Environment Variables:
Conditions:
  Type      Status
  Ready     False 
Volumes:
  mypd:
    Type:   PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  myclaim-1
    ReadOnly:   false
  default-token-64w08:
    Type:   Secret (a secret that should populate this volume)
    SecretName: default-token-64w08
Events:
  FirstSeen LastSeen    Count   From            SubobjectPath           Type        Reason          Message
  --------- --------    -----   ----            -------------           --------    ------          -------
  13s       13s     1   {default-scheduler }                    Normal      Scheduled       Successfully assigned yumserver to 127.0.0.1
  13s       13s     1   {kubelet 127.0.0.1}                 Warning     MissingClusterDNS   kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. Falling back to DNSDefault policy.
  12s       12s     1   {kubelet 127.0.0.1} spec.containers{myfrontend} Normal      Pulling         pulling image "my/nginx:latest"
  8s        8s      1   {kubelet 127.0.0.1} spec.containers{myfrontend} Warning     Failed          Failed to pull image "my/nginx:latest": Error: image my/nginx:latest not found
  8s        8s      1   {kubelet 127.0.0.1}                 Warning     FailedSync      Error syncing pod, skipping: failed to "StartContainer" for "myfrontend" with ErrImagePull: "Error: image my/nginx:latest not found"
13
ginda

そのため、マシンに画像があります。ただし、Docker Hubからイメージをプルしようとしますが、これはおそらく、単一マシンのセットアップでは望んでいないことです。これは、最新のタグがimagePullPolicyを常に暗黙的に設定するために発生します。 IfNotPresentに明示的に設定するか、最新以外のタグに変更してみてください。 –ティモライマン4月28日7時16分

何らかの理由で、Timo Reimannはこれをコメントとしてのみ投稿しましたが、これは間違いなくこの質問に対する公式の回答であるはずなので、再度投稿します。

22
Martin Rauscher

イメージをビルドする前にeval $(minikube docker-env)を実行します。

完全な回答はこちら: https://stackoverflow.com/a/40150867

18
Alin

ErrImagePullの問題をさらに分析する最も簡単な方法は、ノードにsshして、docker pull my/nginx:latest。単一のマシンでKubernetesをセットアップしたことはありませんが、何らかの理由でDockerデーモンにノードから到達できないと想像できます。手軽なプルの試みは、より多くの情報を提供するはずです。

4
Timo Reimann