nginx - 从 Pod 到服务的 Weavenet 网络连接(带有 kubeadm 的 Kubernetes 1.9)

标签 nginx kubernetes kube-dns weave

我有一个本地的 Kubernetes 3 节点集群,安装了 weave-Net 作为 Overlay-Network-Plugin。我的目标是尝试 kubernetes 的网络策略,并将此过程的日志消息导出到 elk-stack。

不幸的是,我无法继续,因为我无法解决我的 kube-dns 问题。名称解析似乎有效,但从 pod 到服务的网络连接存在问题。

这里有一些关于我的设置的事实(有关版本/一般配置详细信息,请参见下文):

  • 我登录到一个 pod“busybox
  • 我有一个名为“nginx”的服务,它与一个正在运行的 nginx-pod 连接
  • 从busybox,我不能ping dns:25 packets transmitted, 0 packets received, 100% packet loss
  • 如果我尝试“nslookup nginx”,我会得到:
    Server:    10.96.0.10
    Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
    
    Name:      nginx
    Address 1: 10.104.126.131 nginx.default.svc.cluster.local
    
  • 我还更改了手动更改busybox-Pod上的配置文件,以在没有FQDN的情况下进行名称解析:
    / # cat /etc/resolv.conf
    nameserver 10.96.0.10
    search default.svc.cluster.local svc.cluster.local cluster.local nginx XXX.XXX.de
    options ndots:5
    

    这对我来说似乎不是一个好的解决方法,但至少它正在工作,并且 nslookup 为我提供了 nginx-Service 的正确 IP:
    user@controller:~$ kubectl get svc
    NAME                     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
    
    nginx                    ClusterIP   10.104.126.131   <none>        80/TCP         3d
    
  • 现在,回到我的网络问题: pod 上似乎没有正确的网络接口(interface)可以建立与服务的连接:
    / # ifconfig
    eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02
              inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
              inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:272 errors:0 dropped:0 overruns:0 frame:0
              TX packets:350 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:23830 (23.2 KiB)  TX bytes:32140 (31.3 KiB)
    
    lo        Link encap:Local Loopback
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    

  • busybox-pod 有这个 IP:172.17.0.2而 DNS 位于以 10 开头的子网中。 dns 的 IP:10.96.0.10 .
  • Weavenet 有时会在一个工作节点上崩溃,但在一般情况下,它显示为“正在运行”,我认为这不是原因。

  • --> 谁能看到我网络中的底层配置错误?我很高兴得到提示! :)

    一般信息:

    Kubernetes/kubectl:v1.9.2
    我使用 kubeadm 安装。

    unname -a: Linux controller 4.4.0-87-generic #110-Ubuntu SMP Tue Jul 18 12:55:35 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
    docker 版本:
        Client:
         Version:      1.13.1
         API version:  1.26
         Go version:   go1.6.2
         Git commit:   092cba3
         Built:        Thu Nov  2 20:40:23 2017
         OS/Arch:      linux/amd64
    
        Server:
         Version:      1.13.1
         API version:  1.26 (minimum version 1.12)
         Go version:   go1.6.2
         Git commit:   092cba3
         Built:        Thu Nov  2 20:40:23 2017
         OS/Arch:      linux/amd64
         Experimental: false
    

    织网:2.2.0

    最佳答案

    没有任何服务 IP(又名集群 IP,又名门户 IP)响应 ping ,所以这不是一个好的测试!一个好的测试是使用适当的客户端尝试服务 IP,例如 nslookup 用于 dns,curl 用于 http 等(并确保您也在正确的端口上执行此操作)。

    正如您从 nslookup 中看到的那样,kube-dns 服务运行正常。

    关于这些 virtual IPs 有一个很好的文档在 Kubernetes 中工作。长话短说:你不会找到这个网络的网络接口(interface),它是通过内核中的重定向创建的(由 iptables 配置)。

    关于nginx - 从 Pod 到服务的 Weavenet 网络连接(带有 kubeadm 的 Kubernetes 1.9),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49735574/

    相关文章:

    apache - 在 CentOS 8 上安装 nginx/apache - 无法找到匹配的 nginx/httpd

    nginx - 在 nginx 重定向中重命名参数

    amazon-web-services - 如何从 EKS/KOPS 集群下运行的 Pod 访问 AWS?

    kubernetes - 取消应用 `apply -f` 应用的配置

    go - Memcached Kubernetes 客户端 Golang

    django - 带有 unix 套接字的 Gunicorn 不工作给出 502 错误网关

    PHP :Why PHP-Curl is not working with nginx

    kubernetes - ubuntu中的kubernetes和外部DNS

    kubernetes - 通过 DNS 对有状态集的 pod 执行 Ping 操作

    kubernetes - 如何在Kubernetes 1.14版上启用coredns进行DNS查找?