我有一个本地的 Kubernetes 3 节点集群,安装了 weave-Net 作为 Overlay-Network-Plugin。我的目标是尝试 kubernetes 的网络策略,并将此过程的日志消息导出到 elk-stack。
不幸的是,我无法继续,因为我无法解决我的 kube-dns 问题。名称解析似乎有效,但从 pod 到服务的网络连接存在问题。
这里有一些关于我的设置的事实(有关版本/一般配置详细信息,请参见下文):
busybox
”nginx
”的服务,它与一个正在运行的 nginx-pod 连接 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
/ # 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
/ # 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
.--> 谁能看到我网络中的底层配置错误?我很高兴得到提示! :)
一般信息:
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/