kubernetes内外网通信-集群外节点访问 pod ip
一、路由
1-1静态路由方案
vi /etc/sysconfig/network-scripts/route-ens33
10.244.235.0/24 via 192.168.200.10 dev ens33
systemctl restart network
192.168.200.10 是k8s节点的ip,它是进该网段的网关
route print
1-2同步calico路由方案: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。
tun设备封装协议包 通过隧道传输,到达目的tun设备解包
用法
服务端
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
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),效率较低。