0 实验环境
- 172.20.6.10、172.20.6.14、172.20.6.17 三台机器组成k8s集群
- 使用腾讯云,将上述机器放到子网bj6:172.20.6.0/24下
- 使用flanel(vxlan)网络插件
- Pod的cidr是10.6.0.0/16
- 创建一个Pod,被调度到n3上,IP是10.6.2.2
1 从集群外另一台机器访问
- 创建另一个子网bj7:172.20.7.0/24,并创建一台新机器172.20.7.13
- 直接访问10.6.2.2是不通的
2 给子网bj7添加路由表,如下:
绑定到bj7后,再次从172.20.7.13上访问10.6.2.2,成功!
curl "10.6.2.2" <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>
3 后记
当你可以操纵路由表时,这种方式时非常方便的,比ingress强太多。
但只有部分网络插件是支持这种打通方式。
可以从任意集群的物理机访问Pod的网络插件,都是可以的,如:
- flanel(vxlan)
- Weave(默认cidr10.32.0.0/12)
其他则不可以的:
- flanel(host-gw)