도커 실습하면서 kubectl get pod에서 에러가 발생합니다. 도와주세요ㅠㅠ

23.12.27 01:55 작성 23.12.27 01:56 수정 조회수 153

0

안녕하세요 '컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 공부하고 있는 학생입니다.

3장 kubelet을 실습하면서 kubectl get pod 명령어 실행했을 때

NAME        READY   STATUS             RESTARTS   AGE
nginx-pod   0/1     ImagePullBackOff   0          62m

위와 같은 에러가 발생합니다. 구글링 해봐도 해결이 안돼서 문의 드립니다.

 

kubectl describe pod nginx-pod 실행했을 때 출력되는 결과입니다.

Name:         nginx-pod
Namespace:    default
Priority:     0
Node:         w1-k8s/192.168.1.101
Start Time:   Wed, 27 Dec 2023 00:43:39 +0900
Labels:       <none>
Annotations:  cni.projectcalico.org/podIP: 172.16.221.129/32
Status:       Pending
IP:           172.16.221.129
IPs:
  IP:  172.16.221.129
Containers:
  container-name:
    Container ID:
    Image:          nginx
    Image ID:
    Port:           <none>
    Host Port:      <none>
    State:          Waiting
      Reason:       ImagePullBackOff
    Ready:          False
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-xvtth (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  default-token-xvtth:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-xvtth
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason  Age                    From             Message
  ----     ------  ----                   ----             -------
  Warning  Failed  3m19s (x260 over 63m)  kubelet, w1-k8s  Error: ImagePullBackOff

[root@m-k8s ~]# kubectl get nodes --kubeconfig admin.conf
NAME     STATUS   ROLES    AGE     VERSION
m-k8s    Ready    master   5h26m   v1.18.4
w1-k8s   Ready    <none>   5h24m   v1.18.4
w2-k8s   Ready    <none>   5h22m   v1.18.4
w3-k8s   Ready    <none>   5h21m   v1.18.4
[root@m-k8s ~]# kubectl get nodes
NAME     STATUS   ROLES    AGE     VERSION
m-k8s    Ready    master   5h27m   v1.18.4
w1-k8s   Ready    <none>   5h26m   v1.18.4
w2-k8s   Ready    <none>   5h24m   v1.18.4
w3-k8s   Ready    <none>   5h22m   v1.18.4

 

kubectl create -f ~/_Book_k8sInfra/ch3/3.1.6/nginx-pod.yaml

=> 구분선 아래의 사진들은 해당 명령어의 실행 화면들입니다. pod/nginx-pod created 까지는 성공을 했는데 kubectl get pod에서 ImagePullBackOff 에러가 뜨는데 해결이 안됩니다. 도와주세요

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.12.28

안녕하세요, 인프런 AI 인턴입니다.
isu님, 문의하신 kubectl get pod 명령어 실행 중 발생한 ImagePullBackOff 에러는 쿠버네티스가 컨테이너 이미지를 가져오려 할 때 발생하는 문제입니다. 이 에러는 주로 다음과 같은 경우에 발생합니다:

  1. 지정한 이미지 이름이나 태그가 잘못되었을 경우
  2. 사설 레지스트리를 사용하고 있고 인증 문제가 있을 경우
  3. 네트워크 연결 문제
  4. 도커 허브 등에 대한 접근 제한 (예: 도커 허브의 경우 무료 사용량 초과 등)

처음으로 해야할 것은 nginx 이미지의 이름과 태그를 정확하게 지정했는지 확인하는 것입니다. nginx-pod.yaml 파일에서 이미지를 nginx:latest 또는 특정 버전으로 적절하게 지정했는지 확인해주세요.

또한, ImagePullBackOff 상태로 인해 문제가 발생한 경우, 해당 이미지를 수동으로 로컬에서 끌어다 놓으려 시도하여 문제를 해결할 수 있습니다. 다음의 명령어를 사용하여 도커에서 이미지를 미리 가져올 수 있습니다:

docker pull nginx

만약 사설 레지스트리를 사용하고 계신다면, 쿠버네티스 클러스터에 레지스트리 인증 정보를 제대로 설정했는지 확인해보세요.

네트워크 연결에 문제가 없는지, 그리고 도커 허브 등 외부 레지스트리로부터 이미지를 정상적으로 가져올 수 있는지를 확인하는 것도 중요합니다. 만약 무료 사용량이 초과됐다면, 해당 레지스트리 서비스의 사용량 제한을 검토해보시는 것이 좋습니다.

아래 명령어를 사용하여 실패한 팟의 이벤트를 확인하고, 왜 이미지를 가져올 수 없는지에 대한 추가 정보를 얻을 수 있습니다:

kubectl describe pod nginx-pod

에러 메시지 중 Error: ImagePullBackOff 밑의 부분에서 보다 자세한 원인을 알 수 있을 것입니다.