1

我有一个本地的 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 安装。

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

码头工人版本:

    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

4

1 回答 1

1

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

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

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

于 2018-04-09T14:47:31.247 回答