前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >打通到kubernetes集群的网络

打通到kubernetes集群的网络

作者头像
jeremyxu
发布2019-05-06 16:31:32
2K0
发布2019-05-06 16:31:32
举报

最近在工作中验证istio的网格扩展方案,其中涉及打通网络的需求,也即希望在外部虚拟机可以连通kubernetes集群内部的服务IP、Pod IP,在kubernetes的Pod中可以连通外部虚拟机的IP。

显然kubernetes里的Pod连通外部虚拟机的IP不是问题,只要虚拟机的防火墙没有限制,这个本身就是连通的。关键是怎样让虚拟机可以直接连通kubernetes里的service IP和pod IP。

这里试验了好几种方案,记录一下。

配置路由规则

最先想到的是直接配置路由规则方案。由于kubernetes的宿主机上可以直接连通service IP和pod IP,而且kubernetes的宿主机上一般安装了docker,ip forward本身也是开启的。因此只需要在虚拟机上设置两条路由规则,就可以将从虚拟机发出的目标地址是service cidr和pod cidr范围里的数据包转发到kubernetes的宿主机,然后kubernetes的宿主机则可以将数据包再转发给service或pod,这基本是最简单的方案了。参考命令如下:

代码语言:javascript
复制
# 在虚拟机上添加以下两条路由规则
sudo route add -net 10.96.0.0/12 gw 192.168.33.10
sudo route add -net 10.244.0.0/16 gw 192.168.33.10

其中10.96.0.0/12为service cidr, 10.244.0.0/16为pod cidr, 192.168.33.10为kubernetes的宿主机。

strongswan搭建V**

配置路由规则虽然简单,但感觉还是太简易了,路由规则很容易被其它进程覆写了。偶然看到rancher推出的多kubernetes网络打通方案submariner,仔细读了下它的设计方案,发现它是使用strongswan建立的IPsec V**。于是也尝试了直接使用strongswan搭建IPsec V**。strongswan的文档写得比较好,将各种场景如何配置都举了个例子。经过仔细对比,发现Roadwarrior Case with Virtual IP这个场景应该是最适合我们的,于是参考这个场景的配置,验证了下我们这个场景,具体验证过程见这里。可惜最终没有成功,原因未知。

sshuttle搭建V**

虽然使用sshuttle搭建V**失败了,但还是不甘心。前几天偶然发现了一个叫sshuttle的工具,其号称是穷人极简的V**方案。只有能与对端建立SSH连接,就可以使用这个工具非常方便地建立一个V**隧道,于是试了试。参考命令如下:

代码语言:javascript
复制
sudo yum install -y sshuttle

sleep 5
# 提前生成ssh密钥对,并做好ssh密钥认证登录
# ssh-keygen -t rsa -N ''
# ssh-copy-id root@192.168.33.10
sudo sshuttle -r root@192.168.33.10 10.96.0.0/12 10.244.0.0/16 > sshuttle.log 2>&1 &

上面的命令意思是,如果发现数据包的目标IP地址是10.96.0.0/1210.244.0.0/16这个范围内,则将数据包经由V**隧道传送出去,真的是好方便。完整的验证过程见这里

总结

打通网络的方案很多,但基本都要求对网络及iptables知识有一定了解,幸好平时在这方面有一切储备。对于一般场景,设置路由规则或sshuttle建V**基本就满足需求了。如果是对安全性要求非常高的场景,还是得采用一套成熟的V**软件搞定。

参考

  1. https://istio.io/zh/docs/setup/kubernetes/additional-setup/mesh-expansion/
  2. https://github.com/rancher/submariner
  3. https://github.com/strongswan/strongswan
  4. https://sshuttle.readthedocs.io/
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 配置路由规则
  • strongswan搭建V**
  • sshuttle搭建V**
  • 总结
  • 参考
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档