2017-04-18 732 views
2

我在本地机器上构建docker镜像并尝试使用kubectl来拖动docker镜像。但它并未启动码头集装箱。kubectl运行本地docker image-ImagePullBackOff状态

图片以docker命令开头。

REPOSITORY           TAG     IMAGE ID   CREATED    SIZE 
tomcat9            latest    8b228ac6f19f  About an hour ago 111 MB 

它通过ImagePullBackOff按钮进行统计。

$ kubectl get pods 
NAME        READY  STATUS    RESTARTS AGE 
tomcat9-511437148-sgkwp   0/1  ImagePullBackOff 0   9m 

我该如何让kubectl运行这个docker镜像?

谢谢

+0

你打算如何开始吊舱?是否有'部署'或您正在使用的命令是什么?你的集群托管在哪里?你的集群是否有网络访问你的本地存储库? –

+0

@OswinNoetzelmann我用这个命令启动:kubectl run tomcat9 --image tomcat9 在minikube中试试这个,我的豆荚已经在运行了。图像和minikube在同一台机器上运行。 – sfgroups

回答

4

我从您的意见下面看到您在本地使用Minikube。

Minikube在虚拟机内运行,在Minikube内运行的Docker和在您机器上运行的Docker是两个独立的实例,因此无法访问相同的映像,但可以将Minikube内的Docker链接到本地​​Docker eval $(minikube docker-env),你可以阅读更多here

此外,您可以通过运行kubectl describe pods tomcat9-511437148-sgkwp获取有关为什么ImagePullBackOff发生的更多信息。

+0

我尝试用yaml文件现在的工作。感谢您的评论。 – sfgroups

0

我用这个yaml文件,现在图像部署在集群上。

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: tomcat9 
    labels: 
    app: tomcat9 
spec: 
    template: 
    metadata: 
     labels: 
     app: tomcat9 
    spec: 
     containers: 
     - image: tomcat9:latest 
     name: tomcat9 
     imagePullPolicy: IfNotPresent 
     ports: 
     - name: http 
      containerPort: 8080 
--- 
apiVersion: v1 
kind: Service 
metadata: 
    name: tomcat9 
    labels: 
    app: tomcat9 
spec: 
    ports: 
    - nodePort: 30080 
    port: 8080 
    protocol: TCP 
    targetPort: 8080  
    selector: 
    app: tomcat9 
    sessionAffinity: None 
    type: NodePort 
status: 
    loadBalancer: {}