Using trace dns

    Screencast of the trace dns gadget

    The trace dns gadget prints information about DNS queries and responses sent and received by the different pods.

    On Kubernetes

    Create a demo namespace:

    $ kubectl create ns demo
    namespace/demo created
    

    Start the dns gadget:

    $ kubectl gadget trace dns -n demo
    NODE                          NAMESPACE                     POD                           QR NAMESERVER      TYPE      QTYPE      NAME
    

    Run a pod on a different terminal and perform some DNS requests:

    $ kubectl -n demo run mypod -it --image=wbitt/network-multitool -- /bin/sh
    # nslookup -querytype=a inspektor-gadget.io. 8.8.4.4
    # nslookup -querytype=aaaa inspektor-gadget.io. 8.8.4.4
    # nslookup -querytype=mx inspektor-gadget.io. 8.8.4.4
    

    The requests will be logged by the DNS gadget:

    NODE                 NAMESPACE            POD                  PID         TID         COMM        QR NAMESERVER      TYPE      QTYPE      NAME                RCODE
    minikube             demo                 mypod                1285309     1285310     isc-net-00… Q  8.8.4.4         OUTGOING  A          inspektor-gadget.i…        
    minikube             demo                 mypod                1285309     1285310     isc-net-00… R  8.8.4.4         HOST      A          inspektor-gadget.i… NoError
    minikube             demo                 mypod                1285594     1285595     isc-net-00… Q  8.8.4.4         OUTGOING  AAAA       inspektor-gadget.i…        
    minikube             demo                 mypod                1285594     1285595     isc-net-00… R  8.8.4.4         HOST      AAAA       inspektor-gadget.i… NoError
    minikube             demo                 mypod                1285655     1285656     isc-net-00… Q  8.8.4.4         OUTGOING  MX         inspektor-gadget.i…        
    minikube             demo                 mypod                1285655     1285656     isc-net-00… R  8.8.4.4         HOST      MX         inspektor-gadget.i… NoError
    

    isc-net-0000 is the name of one of the nslookup threads.

    Delete the demo test namespace:

    $ kubectl delete ns demo
    namespace "demo" deleted
    

    With local-gadget

    TODO