学习和使用 k8s 一段时间了,以下是学习过程中开发的两个小项目,希望能够得到大家的批评和指正,顺便点个 star !
出发点是,在云原生转型过程中,部分应用实例部署在常规虚拟机(192.168.0.0/16)中,部分应用实例部署在 k8s 中(10.233.0.0/16)中,正常情况下,常规虚拟机中的应用无法访问 k8s 中的应用实例。因此开发了这个小工具以同步 calico 路由信息,使常规虚拟机可以访问 pod ip, 使云原生转型更加平滑。
目一:calico-route-sync
简介
相同网络下,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-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
