学习和使用 k8s 一段时间了,以下是学习过程中开发的两个小项目,希望能够得到大家的批评和指正,顺便点个 🌟 star ! 😁😁😁
出发点是,在云原生转型过程中,部分应用实例部署在常规虚拟机(192.168.0.0/16)中,部分应用实例部署在 k8s 中(10.233.0.0/16)中,正常情况下,常规虚拟机中的应用无法访问 k8s 中的应用实例。因此开发了这个小工具以同步 calico 路由信息,使常规虚拟机可以访问 pod ip, 使云原生转型更加平滑。
相同网络下,k8s 集群外的节点同步 calico 路由信息,以直接访问 pod ip
bin:
sudo ./calico-route-sync --kubeconfig=/home/root/.kube/config
docker:
docker run --rm -it --network=host --cap-add NET_ADMIN -v ~/.kube/config:/root/config q946666800/calico-route-sync:0.1 --kubeconfig=/root/config
使用场景比较有限,仅支持 calico ,且 vm-01 与 k8s 节点处于同一网络。
优点是简单、高效、稳定(类似 Calico 节点)。流量直接从 vm-01 流向 k8s 节点,无需经过其他路由器或隧道。
如果您希望 vm-01 可以处于不同的网络中,可以使用项目k8s-tun。
k8s 集群外的节点访问 pod ip, service ip
服务端
kubectl apply -f https://raw.githubusercontent.com/yzxiu/k8s-tun/master/deploy.yaml
客户端
Linux & Mac
# download client
wget https://github.com/yzxiu/k8s-tun/releases/download/0.86-3/client-darwin-amd64-086-3
chmod +x client-linux-amd64-086-3
# start client
sudo ./client-linux-amd64-086-3 -s <k8s-node-ip>:30011
Windows
download [client-windows-amd64-086-3.exe]( https://github.com/yzxiu/k8s-tun/releases/download/0.86-3/client-windows-amd64-086-3.exe)
install the attached tap-windows-9.24.2-I601-Win10 driver
right click `client-windows-amd64-086-3.exe` and run as administrator
优点:理论上支持所有 cni 插件,vm-01 可以与 k8s 集群处于不同网络,使用比较灵活。客户端无需配置 kubeconfig
缺点:流量通过隧道传输(类似于 openvpn),效率较低。
隧道实现参考了 https://github.com/net-byte/vtun
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.