kubectl获取豆荚 – kubectl获取豆荚 – 状态ImagePullBackOff

我试图在本地运行我的第一个kubernetes荚。 我已经运行以下命令(从这里 ):

export ARCH=amd64 docker run -d \ --volume=/:/rootfs:ro \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:rw \ --volume=/var/lib/kubelet/:/var/lib/kubelet:rw \ --volume=/var/run:/var/run:rw \ --net=host \ --pid=host \ --privileged \ gcr.io/google_containers/hyperkube-${ARCH}:${K8S_VERSION} \ /hyperkube kubelet \ --containerized \ --hostname-override=127.0.0.1 \ --api-servers=http://localhost:8080 \ --config=/etc/kubernetes/manifests \ --cluster-dns=10.0.0.10 \ --cluster-domain=cluster.local \ --allow-privileged --v=2 

然后,我试着运行以下内容:

 kubectl create -f ./run-aii.yaml 

运行aii.yaml:

 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: aii spec: replicas: 2 template: metadata: labels: run: aii spec: containers: - name: aii image: aii ports: - containerPort: 5144 env: - name: KAFKA_IP value: kafka volumeMounts: - mountPath: /root/script name: scripts-data readOnly: true - mountPath: /home/aii/core name: core-aii readOnly: true - mountPath: /home/aii/genome name: genome-aii readOnly: true - mountPath: /home/aii/main name: main-aii readOnly: true - name: kafka image: kafkazoo volumeMounts: - mountPath: /root/script name: scripts-data readOnly: true - mountPath: /root/config name: config-data readOnly: true - name: ws image: ws ports: - containerPort: 3000 volumes: - name: scripts-data hostPath: path: /home/aii/general/infra/script - name: config-data hostPath: path: /home/aii/general/infra/config - name: core-aii hostPath: path: /home/aii/general/core - name: genome-aii hostPath: path: /home/aii/general/genome - name: main-aii hostPath: path: /home/aii/general/main 

现在,当我运行: kubectl get pods我得到:

 NAME READY STATUS RESTARTS AGE aii-806125049-18ocr 0/3 ImagePullBackOff 0 52m aii-806125049-6oi8o 0/3 ImagePullBackOff 0 52m aii-pod 0/3 ImagePullBackOff 0 23h k8s-etcd-127.0.0.1 1/1 Running 0 2d k8s-master-127.0.0.1 4/4 Running 0 2d k8s-proxy-127.0.0.1 1/1 Running 0 2d nginx-198147104-9kajo 1/1 Running 0 2d 

顺便说一句: docker images返回:

 REPOSITORY TAG IMAGE ID CREATED SIZE ws latest fa7c5f6ef83a 7 days ago 706.8 MB kafkazoo latest 84c687b0bd74 9 days ago 697.7 MB aii latest bd12c4acbbaf 9 days ago 1.421 GB node 4.4 1a93433cee73 11 days ago 647 MB gcr.io/google_containers/hyperkube-amd64 v1.2.4 3c4f38def75b 11 days ago 316.7 MB nginx latest 3edcc5de5a79 2 weeks ago 182.7 MB docker_kafka latest e1d954a6a827 5 weeks ago 697.7 MB spotify/kafka latest 30d3cef1fe8e 12 weeks ago 421.6 MB wurstmeister/zookeeper latest dc00f1198a44 3 months ago 468.7 MB centos latest 61b442687d68 4 months ago 196.6 MB centos centos7.2.1511 38ea04e19303 5 months ago 194.6 MB gcr.io/google_containers/etcd 2.2.1 a6cd91debed1 6 months ago 28.19 MB gcr.io/google_containers/pause 2.0 2b58359142b0 7 months ago 350.2 kB sequenceiq/hadoop-docker latest 5c3cc170c6bc 10 months ago 1.766 GB 

为什么我得到ImagePullBackOff?

默认情况下,Kubernetes在公共Dockerregistry中查找以查找图像。 如果您的图片不存在,则无法将其拉出。

您可以使用registry集群插件运行本地Kubernetesregistry。

然后用localhost:5000标记你的图像:

 docker tag aii localhost:5000/dev/aii 

将图像推送到Kubernetesregistry:

 docker push localhost:5000/dev/aii 

并更改run-aii.yaml以使用localhost:5000/dev/aii图像而不是aii 。 现在Kubernetes应该能够拉图像。

或者,您可以通过提供此(AWS ECR,GCR等)的提供程序之一运行私人Dockerregistry,但是如果这用于本地开发,则使用本地Kubernetes Dockerregistry进行设置将会更快更轻松。