kubernetes无法拉本地形象

我在一台机器上使用kubernetes进行testing,我从nginx的docker镜像中构build了一个自定义的镜像,但是当我尝试在kubernetes中使用镜像的时候,我得到一个镜像拉错误。

我的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 

我的KUBERNETES命令

kubectl创build-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或更改为最新以外的标签。 – Timo Reimann 4月28日7:16

由于某种原因,Timo Reimann只是把这个post作为评论发表,但是肯定应该是这个问题的正式答案,所以我再次发表。

进一步分析ErrImagePull问题最简单的方法是ssh进入节点,并尝试通过执行docker pull my/nginx:latest手动拉取图像。 我从来没有在一台机器上设置Kubernetes,但可以想象,出于某种原因,Docker守护进程无法从节点到达。 一个手拉的尝试应该提供更多的信息。

在构build图像之前运行eval $(minikube docker-env)。

完整答案在这里: https : //stackoverflow.com/a/40150867