【问题标题】:Weavenet network connection from Pod to service (Kubernetes 1.9 with kubeadm)从 Pod 到服务的 Weavenet 网络连接(带有 kubeadm 的 Kubernetes 1.9)
【发布时间】:2018-04-09 14:37:59
【问题描述】:

我有一个本地的 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 上似乎没有正确的网络接口,无法建立与服务的连接:

    / # 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安装。

uname -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

码头工人版本:

    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

【问题讨论】:

  • 您无法 ping 集群 IP,但您可以 ping 一个 pod 以测试 Weavenet 是否工作

标签: nginx kubernetes kube-dns weave


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-16
    • 2022-01-11
    • 2016-04-28
    • 1970-01-01
    • 2018-09-03
    • 2022-06-16
    • 2020-08-04
    • 2018-08-18
    相关资源
    最近更新 更多