Kubernetes 入口控制器 - 错误:ImagePullBackOff

use*_*702 2 kubernetes

我无法让控制器工作。尝试了很多次,但我还是明白了Error: ImagePullBackOff

有没有我可以尝试的替代方案,或者知道为什么它会失败?

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.27.0/deploy/static/mandatory.yaml
Run Code Online (Sandbox Code Playgroud)

kubectl describe pod nginx-ingress-controller-7fcb6cffc5-m8m5c -n ingress-nginx

Name:         nginx-ingress-controller-7fcb6cffc5-m8m5c
Namespace:    ingress-nginx
Priority:     0
Node:         ip-10-0-0-244.ap-south-1.compute.internal/10.0.0.244
Start Time:   Mon, 07 Dec 2020 08:21:13 -0500
Labels:       app.kubernetes.io/name=ingress-nginx
              app.kubernetes.io/part-of=ingress-nginx
              pod-template-hash=7fcb6cffc5
Annotations:  kubernetes.io/limit-ranger: LimitRanger plugin set: cpu, memory request for container nginx-ingress-controller
              kubernetes.io/psp: eks.privileged
              prometheus.io/port: 10254
              prometheus.io/scrape: true
Status:       Pending
IP:           10.0.0.231
IPs:
  IP:           10.0.0.231
Controlled By:  ReplicaSet/nginx-ingress-controller-7fcb6cffc5
Containers:
  nginx-ingress-controller:
    Container ID:
    Image:         quay.io/kubernetes-ingress-controller/nginx-ingress-controller:master
    Image ID:
    Ports:         80/TCP, 443/TCP
    Host Ports:    0/TCP, 0/TCP
    Args:
      /nginx-ingress-controller
      --configmap=$(POD_NAMESPACE)/nginx-configuration
      --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
      --udp-services-configmap=$(POD_NAMESPACE)/udp-services
      --publish-service=$(POD_NAMESPACE)/ingress-nginx
      --annotations-prefix=nginx.ingress.kubernetes.io
    State:          Waiting
      Reason:       ErrImagePull
    Ready:          False
    Restart Count:  0
    Requests:
      cpu:      100m
      memory:   90Mi
    Liveness:   http-get http://:10254/healthz delay=10s timeout=10s period=10s #success=1 #failure=3
    Readiness:  http-get http://:10254/healthz delay=0s timeout=10s period=10s #success=1 #failure=3
    Environment:
      POD_NAME:       nginx-ingress-controller-7fcb6cffc5-m8m5c (v1:metadata.name)
      POD_NAMESPACE:  ingress-nginx (v1:metadata.namespace)
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from nginx-ingress-serviceaccount-token-xtnz9 (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  nginx-ingress-serviceaccount-token-xtnz9:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  nginx-ingress-serviceaccount-token-xtnz9
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  kubernetes.io/os=linux
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason     Age   From               Message
  ----     ------     ----  ----               -------
  Normal   Scheduled  19s   default-scheduler  Successfully assigned ingress-nginx/nginx-ingress-controller-7fcb6cffc5-m8m5c to ip-10-0-0-244.ap-south-1.compute.internal
  Normal   Pulling    18s   kubelet            Pulling image "quay.io/kubernetes-ingress-controller/nginx-ingress-controller:master"
  Warning  Failed     3s    kubelet            Failed to pull image "quay.io/kubernetes-ingress-controller/nginx-ingress-controller:master": rpc error: code = Unknown desc = Error response from daemon: Get https://quay.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
  Warning  Failed     3s    kubelet            Error: ErrImagePull
  Normal   BackOff    3s    kubelet            Back-off pulling image "quay.io/kubernetes-ingress-controller/nginx-ingress-controller:master"
  Warning  Failed     3s    kubelet            Error: ImagePullBackOff
Run Code Online (Sandbox Code Playgroud)

gan*_*alf 5

我遇到了同样的问题,ingress-nginx安装时。

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.2.0/deploy/static/provider/cloud/deploy.yaml
Run Code Online (Sandbox Code Playgroud)

由于某种原因,它无法获取 ingress-nginx-controller。

$ kubectl get pods --namespace=ingress-nginx
NAME                                        READY   STATUS             RE
ingress-nginx-admission-create-6q4wx        0/1     Completed          0 
ingress-nginx-admission-patch-fr5ct         0/1     Completed          1 
ingress-nginx-controller-686556747b-dg68h   0/1     ImagePullBackOff   0 
Run Code Online (Sandbox Code Playgroud)

我所做的是,我运行$ kubectl describe pod ingress-nginx-controller-686556747b-dg68h --namespace ingress-nginx 并得到以下输出:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.2.0/deploy/static/provider/cloud/deploy.yaml
Run Code Online (Sandbox Code Playgroud)

Containers.controller.Image,我得到了 kubernetes 尝试下载但未成功的图像名称,并尝试docker pull自己下载该图像,如下所示:

$ kubectl get pods --namespace=ingress-nginx
NAME                                        READY   STATUS             RE
ingress-nginx-admission-create-6q4wx        0/1     Completed          0 
ingress-nginx-admission-patch-fr5ct         0/1     Completed          1 
ingress-nginx-controller-686556747b-dg68h   0/1     ImagePullBackOff   0 
Run Code Online (Sandbox Code Playgroud)

Docker 可以成功拉取镜像,之后一切正常。