[Error 해결!] kubernetes 에서 docker private registry 사용해서pod 기동 시, connection refused가 뜰 때(minikube를 사용해서 kubernetes를 설치했을 경우)

송명규·2023년 3월 23일
0

Error 해결

목록 보기
1/1

후.. 정말 길고도 긴 싸움이었다.

물론 지금도 정확히 사설 registry를 구성한 건 아니지만,
일단은 돌아는간다.
그래서 추천하는 방법은 아니고, 내가 임시방편으로 오류를 해결을 했고 혹시 임시방편이 필요한 사람들을 위해 올린다.

⚠️ 문제

현재 나는 docker-desktop을 이용하여, wsl 환경에서 minikube를 통해 kubernetes(driver == docker)를 설치하였다.

지금 나는 kubernetes에서 docker registry안에 있는 image를 불러와 pod에서 기동시키려 하고 있다.

그러나 아무리 pod을 재 실행 시켜봐도, connection refused가 발생한다.
이미 docker 위에서는 registry 5000:5000이 돌고 있는 상황이다.
그래서 curl로 이미지를 불러와봤는데, 너무나도 잘 불러와진다.

오로지, pod에서 기동될때만, connction refused가 뜬다.

🤔 생각의 과정

이것저것 해보던 중, docker registry에서 127.0.0.1:5000(docker registry의 기본포트)불러오는 것 말고, 다른 docker image는 pod에서 기동이 잘 될까? 라는 생각이 들어 docker images를 통해 불러온 녀석들중 임의로 하나 골라서 돌려봤다.

error 없이 잘 불러와 진다.

그럼 docker registry가 문제인가?
-> NO. 그렇다고 하기에는 curl -I 127.0.0.1하면 너무 잘 받아짐.

그럼 docker registry가 있는 환경이 kubernetes가 registry를 사용할때 바라보지 않는 곳에 위치하는가?
-> YES. 그렇다고 가정함.

그렇다면 어디를 보고있는가?
-> minikube안의환경을 바라보고 불러오는 것을 알아냄.

💡 해결

결국 minikube 안에 docker에 image를 push 하기로 했다.

(1) kubernetes위에 image build

먼저 기존 kubernetes 위에서 원하는 image를 build만 하자.(push 노노 어짜피 안씀)

(2) kubernetes에서 minikube로 보내기

minikube image load ${이미지 이름} 

혹은

minikube cache add ${이미지 이름} 

를 통해 minikube로 올려주자.

명령어 입력 시, 별 설명이 없어서 가만히 좀 기다려야한다.

(3) minikube에서 docker registry 받고 + 실행

minikube ssh

를 통해 minikube로 들어간 후,

minikube image ls

를 통해 아까 image 보낸 것이 잘 등록되었는지 확인해보자.

docker pull registry
docker run --name docker-registry -p 5000:5000 registry

를 통해 docker registry를 실행시켜주자.

(4) minikube에 push하기

sudo docker push ${이미지 이름 및 태그}

를 통해 push 해주자.

(5) pod 기동 ㄱㄱㄱㄱ

이제 pod을 실행시키면 오류가 나지 않는다.

사실, 물론, 정말 아주 개똥 같은 방법이다.

당연히 minikube addons enable registry를 통해서 하는 방법이 가장 좋고, postforwarding 하는 방법도 좋다고 생각한다.
하지만 나 같은 경우 다른 방법은 모두 실패했다.

그렇기에 혹시 나 같이 stackoverflow나 각종 해외 사이트들을 크롬 오른쪽 위의 번역버튼을 눌러가며 항해하고 있을 사람들을 위해서 적어둔다.

오류나 궁금한 것, 이렇게 하면 훨씬 빠르고 좋다고 생각하시는 것들 적어주시면 감사하겟읍니다!(실행 이미지는 천천히 올리겠습니다...)

profile
안녕하세요

0개의 댓글