backend/kubernetes

DNS 서버 사용 이후 minikube에서 docker pull 안되는 문제 (`Error response from daemon: Get https://registry-1.docker.io/v2/: dial...: read: connection refused`)

seul chan 2020. 6. 17. 23:53

DNS 서버 사용 이후 minikube에서 docker pull 안되는 문제

Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 192.168.64.1:53: read udp 192.168.64.4:48733->192.168.64.1:53: read: connection refused

minikube를 잘 사용하고 있다가 cloudflared DNS over https를 사용한 이후로 minikube 안에서 docker pull이 안되는 문제가 발생했다.

$ minikube ssh
            _         _ ( )           ( )
  ___ ___  (_)  ___  (_)| |/')  _   _ | |_      __
/' _ ` _ `\| |/' _ `\| || , <  ( ) ( )| '_`\  /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )(  ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)

$ docker pull alpine
Using default tag: latest
Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 192.168.64.1:53: read udp 192.168.64.4:48733->192.168.64.1:53: read: connection refused

$ curl -v -I google.com
* Could not resolve host: google.com
curl: (6) Could not resolve host: google.com

찾아보니 많은 사람들이 비슷한 문제를 겪고 있는 듯 하다. 문제는 127.0.0.1:53 (udp + tcp)를 같이 사용해서 생기는 듯 한데.. DNS server가 hyperkit DNS server와 충돌해서 생기는 문제인듯 하다.

해결하려면 virtualbox를 사용하거나 해당 DNS service를 죽여햐한다.

확인해보니 cloudflar가 뜨는것을 볼 수 있다.

$ sudo lsof -i :53
cloudflar 98935           root    5u  IPv4 0xca93a294b6868867      0t0  UDP localhost:domain
cloudflar 98935           root    8u  IPv4 0xca93a294bb5e785f      0t0  TCP localhost:domain (LISTEN)

이를 죽이고 다시 시도해보았다.

$ sudo kill 98935
$ minikube stop
$ minikube start
$ minikube ssh
                         _             _
            _         _ ( )           ( )
  ___ ___  (_)  ___  (_)| |/')  _   _ | |_      __
/' _ ` _ `\| |/' _ `\| || , <  ( ) ( )| '_`\  /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )(  ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)

$ curl google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

$ docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
df20fa9351a1: Pull complete
Digest: sha256:185518070891758909c9f839cf4ca393ee977ac378609f700f60a771a2dfe321
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

이제 정상적으로 작동하는 것을 볼 수 있다.

p.s. kt 인터넷에서 아이클라우드가 너무나도 느려서 DNS를 사용해보려고 하였는데 일단 cloudflareddnscrypt-proxy는 사용이 힘들 듯 하다. dnscrypt-proxy는 아래 명령어로 우회가 가능하다고는 하는데, 빨리 문제가 해결되었으면 좋겠다.

$ minikube start ... --hyperkit-vpnkit-sock=/Users/username/Library/Containers/com.docker.docker/Data/vpnkit.eth.sock

참고