2016-04-26 76 views
4

我在单台机器上使用kubernetes进行测试,我从nginx docker镜像中构建了一个自定义镜像,但是当我尝试在kubernetes中使用镜像时,出现图像拉错误? ??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 COMMAND

kubectl创建-f荚yumserver.yaml

THE ERROR

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" 

回答

2

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

+0

搬运工拉我的/ nginx的:最新 试图拉库docker.io/my/nginx ...失败 错误而拉图像:获取的https://index.docker。 io/v1/repositories/my/nginx/images:dial tcp:lookup index.docker.io:没有与主机名关联的地址 – ginda

+0

这是输出或我的docker images命令: – ginda

+0

docker images 存储库标记IMAGE ID CREATED虚拟大小 my/nginx latest 04938de4965a 2周前182.6 MB – ginda

3

因此,您的机器上有图像。但它仍然试图从Docker Hub中提取图像,这可能不是您单机设置中的要求。发生这种情况是因为最新的标记将imagePullPolicy设置为始终隐含。您可以尝试将其设置为IfNotPresent或更改为最新以外的标签。 - Timo Reimann 4月28日7:16

由于某些原因,Timo Reimann只做了上述评论,但它肯定应该是这个问题的正式答案,所以我再次发布它。

+1

顺便说一句恕我直言,你应该总是指定一个版本。使一切变得更加可预测... –