テストのために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"
そのため、マシンに画像があります。ただし、Docker Hubからイメージをプルしようとしますが、これはおそらく、単一マシンのセットアップでは望んでいないことです。これは、最新のタグがimagePullPolicyを常に暗黙的に設定するために発生します。 IfNotPresentに明示的に設定するか、最新以外のタグに変更してみてください。 –ティモライマン4月28日7時16分
何らかの理由で、Timo Reimannはこれをコメントとしてのみ投稿しましたが、これは間違いなくこの質問に対する公式の回答であるはずなので、再度投稿します。
イメージをビルドする前にeval $(minikube docker-env)を実行します。
完全な回答はこちら: https://stackoverflow.com/a/40150867
ErrImagePull
の問題をさらに分析する最も簡単な方法は、ノードにsshして、docker pull my/nginx:latest
。単一のマシンでKubernetesをセットアップしたことはありませんが、何らかの理由でDockerデーモンにノードから到達できないと想像できます。手軽なプルの試みは、より多くの情報を提供するはずです。