kubectl获取pods ErrImagePull

时间:2018-04-09 19:44:15

标签: docker kubernetes minikube

我和Kubernetes打架。我已经搜索了很多内容并查看了一些答案,例如this one - 但似乎无法让它发挥作用。

我创建了一个docker容器并推送到本地注册表:

sudo docker run -d -p 5000:5000 --name registry registry:2
sudo docker tag i-a/i-a:latest localhost:5000/i-a
sudo docker push localhost:5000/i-a

最后一个命令给出:

The push refers to a repository [localhost:5000/i-a]
e0a33c56cca0: Pushed 
54ab83ede54d: Pushed 
f5a58f369605: Pushed 
cd7100a72410: Pushed 
latest: digest: sha256:0f30cdf6b4a4e0e382a6cae50c1325103c3b987d9e51c42edea2244a82ae1331 size: 1164

执行sudo docker pull localhost:5000/i-a给出:

Using default tag: latest
latest: Pulling from i-a
Digest: sha256:0f30cdf6b4a4e0e382a6cae50c1325103c3b987d9e51c42edea2244a82ae1331
Status: Image is up to date for localhost:5000/i-a:latest

配置文件i-a.yaml:

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    run: i-a
  name: i-a
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      run: i-a
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      labels:
        run: i-a
    spec:
      containers:
      - image: localhost:5000/i-a
        imagePullPolicy: IfNotPresent
        name: i-a
        ports:
        - containerPort: 8090
      dnsPolicy: ClusterFirst
      restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  labels:
    run: i-a
  name: i-a
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8090
  selector:
    run: i-a
  sessionAffinity: None
  type: ClusterIP

当我sudo kubectl get pods --all-namespaces时,我得到:

...
default       i-a-3400848339-0x6c9   0/1       ImagePullBackOff   0          13m
default       i-a-3400848339-7ltp1   0/1       ImagePullBackOff   0          13m
default       i-a-3400848339-wv092   0/1       ImagePullBackOff   0          13m

ImagePullBackOff转为ErrImagePull

当我运行kubectl describe pod i-a-3400848339-0x6c9时,我收到错误Failed to pull image "localhost:5000/i-a": Error while pulling image: Get http://localhost:5000/v1/repositories/i-a/images: dial tcp 127.0.0.1:5000: getsockopt: connection refused

Name:       i-a-3400848339-0x6c9
Namespace:  default
Node:       minikube/192.168.99.100
Start Time: Mon, 09 Apr 2018 21:11:15 +0200
Labels:     pod-template-hash=3400848339
        run=i-a
Status:     Pending
IP:     172.17.0.7
Controllers:    ReplicaSet/i-a-3400848339
Containers:
  i-a:
    Container ID:                  
    Image:      localhost:5000/i-a
    Image ID:       
    Port:       8090/TCP
    State:      Waiting
      Reason:       ImagePullBackOff
    Ready:      False
    Restart Count:  0
    Volume Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-bmwkd (ro)
    Environment Variables:  <none>
Conditions:
  Type      Status
  Initialized   True 
  Ready     False 
  PodScheduled  True 
Volumes:
  default-token-bmwkd:
    Type:   Secret (a volume populated by a Secret)
    SecretName: default-token-bmwkd
QoS Class:  BestEffort
Tolerations:    <none>
Events:
  FirstSeen LastSeen    Count   From            SubobjectPath               Type        Reason      Message
  --------- --------    -----   ----            -------------               --------    ------      -------
  18m       18m     1   {default-scheduler }                        Normal      Scheduled   Successfully assigned i-a-3400848339-0x6c9 to minikube
  18m       2m      8   {kubelet minikube}  spec.containers{i-a}    Normal      Pulling     pulling image "localhost:5000/i-a"
  18m       2m      8   {kubelet minikube}  spec.containers{i-a}    Warning     Failed      Failed to pull image "localhost:5000/i-a": Error while pulling image: Get http://localhost:5000/v1/repositories/i-a/images: dial tcp 127.0.0.1:5000: getsockopt: connection refused
  18m       2m      8   {kubelet minikube}                      Warning     FailedSync  Error syncing pod, skipping: failed to "StartContainer" for "i-a" with ErrImagePull: "Error while pulling image: Get http://localhost:5000/v1/repositories/i-a/images: dial tcp 127.0.0.1:5000: getsockopt: connection refused"

  18m   13s 75  {kubelet minikube}  spec.containers{i-a}    Normal  BackOff     Back-off pulling image "localhost:5000/i-a"
  18m   13s 75  {kubelet minikube}                      Warning FailedSync  Error syncing pod, skipping: failed to "StartContainer" for "i-a" with ImagePullBackOff: "Back-off pulling image \"localhost:5000/i-a\""

我不知道下一步该往下看...... (当我浏览http://localhost:5000/v1/repositories/i-a/images时,我得到404)

1 个答案:

答案 0 :(得分:1)

尝试:

spec:
      containers:
      - image: localhost:5000/i-a
        imagePullPolicy: Never
        name: i-a
        ports:
        - containerPort: 8090
      dnsPolicy: ClusterFirst
      restartPolicy: Always