
问题算是完美解决了,这里记录一下希望能帮助有需要的人。
问题产生的环境以及原因:virtualbox虚拟机,k8s: 1master 2worker,网络均使用host-only模式生成虚拟机节点IP,此IP不需要DHCP到宿主机的路由器,因此不会随着外部网络环境的变化而改变IP,但弊端是无法连接外部网络,于是楼主想到使用NAT模式来从虚拟机中访问外部网络环境。
因此理想的情况是:
集群内部网络 => 走 host-only网卡 外部网络 => 走 nat 网卡 在worker节点下执行 route -n查看路由表,我发现service ip(10.96.0.0/12)并不在这个路由表里,最终导致走了最后的host-only网卡,我们知道host-only网卡是连不到外部网络的,因此执行下面的操作,回归正常:
# 如果目标IP不在路由表里,走这条路由(即外部网络,10.0.3.2 是nat的网关) route add default gw 10.0.3.2 dev enp0s8 # 目标是k8s service ip网段走host-only网卡(即下面的enp0s3) route add -net 10.96.0.0/12 dev enp0s3 简单测试一下:
curl https://10.96.0.1 --insecure -vvv curl baidu.com -vvv ~~ 我发现service ip(10.96.0.0/12)并不在这个路由表里,最终导致走了最后的host-only网卡,我们知道host-only网卡是连不到外部网络的~~
抱歉这部分说反了,实际是service ip 走了nat模式到外网寻找网络10.96.0.0/12去了,显然这样是找不到的。
1 learningman 2020-12-06 12:56:07 +08:00 先自顶向下,然后去看文档吧 |
2 CallMeReznov 2020-12-06 17:16:54 +08:00 |
3 fasionchan 2020-12-06 18:36:26 +08:00 |
4 zhoudaiyu PRO iptables 不是 kube-proxy 自动生成的吗?为啥要配呢? |
5 lvzhiqiang 2020-12-07 09:33:43 +08:00 用 VMware Workstation, 网络访问方式 用 nat, 组一个私网。 能上外网又不会出现你说的那些莫名的问题。 你这样做只会引入复杂性,不容易排错和定位问题。 |
6 JJstyle OP @lvzhiqiang 你说的这种应该就是 vb 里面的桥接模式吧,我刚开始也用这种,这个确实方便省事,但是有个缺陷就是 wifi 变了虚拟机 ip 也会变 |
7 JJstyle OP @lvzhiqiang VMware Workstation 的 nat 模式是可以的,找了篇文章分析两个虚拟机软件的网络的区别,看来这个 nat 模式区别有点大: https://blog.csdn.net/lyjshen/article/details/69367245 |
8 lvzhiqiang 2020-12-07 10:19:45 +08:00 @JJstyle nat 模式,不会变, 你只要配置 IP 为固定 IP 就可以了。 桥接模式也可以,IP 和你真实物理的局域网一个段,同样是配置固定 IP 就行。DHCP 只是自动获取 IP 而已。 |
9 JJstyle OP @zhoudaiyu 所以我一开始方向就错了,iptables 没问题,往上找了篇博客,我跟他有类似的问题,但是他是改 iptables 解决的,https://wilhelmguo.cn/blog/post/william/Kubernetes-%E8%B8%A9%E5%9D%91%E8%AE%B0%E4%B9%8B-%E9%9B%86%E7%BE%A4node%E6%97%A0%E6%B3%95%E8%AE%BF%E9%97%AEservice |
10 JJstyle OP @lvzhiqiang virtualbox 的 nat 和 vmware 的 nat 有些区别,即 vb 里的 nat,虚拟机互相无法通信(可以看我上面发到链接),所以我不能用他搭建集群网络。 |
11 JJstyle OP @lvzhiqiang 固定 IP 这个我清楚,但是有时我在家,有时我在公司,网络不一样,所以 IP 无法固定 |
12 lvzhiqiang 2020-12-07 10:35:33 +08:00 @JJstyle vmware 用 nat 就可以了。 我都是用 nat,搞了很多次部署配置实验了。 |
13 lc7029 2020-12-07 15:55:19 +08:00 建议先系统学习 tcpip,吃透原理再来 |