Skip to main content

Podman기반의 DNS연동

podman을 사용할 경우 네트워크는 cni를 사용하게 되는데, 기본값은 호스트의 DNS를 사용하기 때문에 컨테이너 내부의 DNS를 사용해야할 경우 호출이 불가능.

  1. docker기반에서 컨테이너간 dns통신상태 확인
    $> docker exec -it awx_task ping redis
    PING redis (172.18.0.5) 56(84) bytes of data.
    64 bytes from awx_redis.awxcompose_default (172.18.0.5): icmp_seq=1 ttl=64 time=0.240 ms
    64 bytes from awx_redis.awxcompose_default (172.18.0.5): icmp_seq=2 ttl=64 time=0.090 ms
    64 bytes from awx_redis.awxcompose_default (172.18.0.5): icmp_seq=3 ttl=64 time=0.074 ms
    ^C
    --- redis ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 3ms
    rtt min/avg/max/mdev = 0.074/0.134/0.240/0.075 ms
  2. podman 기반에서 컨테이너간 dns통신상태 확인
    $ podman exec  -it awx_task ping redis
    ping: redis: Name or service not known

조치사항

  1. cni에 dnsname 플러그인 설치 및 NetworkManager 연동


  2. dns패키지 설치
    $> yum install dnsmasq podman-plugins -y
  3. NetworkManager dnsname 플러그인 연동 후 서비스 재시작
    $> vi /etc/NetworkManager/NetworkManager.conf
    ...
    [main]
    dns=dnsmasq
    ...

  4. NetworkManager에 dnsname 플러그인 설치 여부 확인
    $> ls -l /usr/libexec/cni/
    합계 73252
    ...
    -rwxr-xr-x 1 root root 3980624  2월  2 09:00 dnsname
    ...

  5. cni에 dnsname 플러그인 설치
    $> vi /etc/cni/net.d/awxcompose_default.conflist
    ...
         {
            "type": "firewall",
            "backend": ""
         },
         {
            "type": "tuning"
         },
         {
             "type": "dnsname",
             "domainName": "awxcompose_default",
             "capabilities": {
                 "aliases": true
             }
         }
      ]
    }
  6. 서버 재부팅
  7. 내부 통신 확인
    $>  podman exec  -it awx_task ping redis
    PING redis (10.89.0.2) 56(84) bytes of data.
    64 bytes from awx_redis (10.89.0.2): icmp_seq=1 ttl=64 time=0.119 ms
    64 bytes from awx_redis (10.89.0.2): icmp_seq=2 ttl=64 time=0.047 ms
    64 bytes from awx_redis (10.89.0.2): icmp_seq=3 ttl=64 time=0.070 ms
    64 bytes from awx_redis (10.89.0.2): icmp_seq=4 ttl=64 time=0.072 ms
    ^C
    --- redis ping statistics ---
    7 packets transmitted, 7 received, 0% packet loss, time 155ms
    rtt min/avg/max/mdev = 0.047/0.069/0.119/0.021 ms