代码之家  ›  专栏  ›  技术社区  ›  Stanford Bangaba

具有weave的kube dns无法查找服务

  •  1
  • Stanford Bangaba  · 技术社区  · 7 年前

    我在我的Fedora机器上创建了一个kubeadm(Kubernetes 1.8)集群,其中有一个vagrant节点。集群运行正常,但在测试dns时,我遇到了一个奇怪的问题:

    $ kubectl exec busybox -- nslookup friendservice.mynamespace
    Server:    10.96.0.10
    Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
    
    Name:      friendservice.mynamespace
    Address 1: 10.44.0.2 friendservice-
    0.friendservice.mynamespace.svc.cluster.local
    
    $ kubectl -n mynamespace exec userservice-0 -- nslookup 
    friendservice.mynamespace
    nslookup: can't resolve '(null)': Name does not resolve
    
    Name:      friendservice
    Address 1: 10.44.0.2 friendservice-
    0.friendservice.mynamespace.svc.cluster.local
    

    在mynamespace命名空间中运行的服务的默认命名空间中的busybox pod中的nslookup工作正常,但当我尝试在同一自定义命名空间(mynamespace)中对服务进行nslookup时,dns首先无法解析,但随后解析。我错过了什么?

    $ kubectl get pods --all-namespaces
    kubectl get pods --all-namespaces         
    NAMESPACE     NAME                                    READY     STATUS             RESTARTS   AGE
    default       busybox                                 1/1       Running            2          2h
    kube-system   etcd-fed-master                         1/1       Running            6          2h
    kube-system   kube-apiserver-fed-master               1/1       Running            0          2h
    kube-system   kube-controller-manager-fed-master      1/1       Running            0          2h
    kube-system   kube-dns-545bc4bfd4-jkhrr               3/3       Running            0          2h
    kube-system   kube-proxy-5vcvr                        1/1       Running            0          2h
    kube-system   kube-proxy-f4765                        1/1       Running            0          2h
    kube-system   kube-scheduler-fed-master               1/1       Running            1          2h
    kube-system   weave-net-jw647                         2/2       Running            0          2h
    kube-system   weave-net-z25rv                         2/2       Running            0          2h
    mynamespace     friendservice-0                        1/1       Running            5          10m
    mynamespace     userservice-0                          1/1       Running   0          26m
    
    $ kubectl exec busybox -- cat /etc/resolv.conf 
    nameserver 10.96.0.10
    search default.svc.cluster.local svc.cluster.local cluster.local
    options ndots:5
    
    $ kubectl -n mynamespace exec bookentryservice-0 -- cat /etc/resolv.conf
    nameserver 10.96.0.10
    search mynamespace.svc.cluster.local svc.cluster.local cluster.local
    options ndots:5
    

    任何帮助都将不胜感激。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Christopher Thomas    6 年前

    这是Alpine Linux及其musl库的一个问题。它破坏了DNS功能,多年来一直如此,显然他们并没有真的费心去修复它。

    https://github.com/gliderlabs/docker-alpine/blob/master/docs/caveats.md#dns https://github.com/gliderlabs/docker-alpine/issues/8