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
kubernetes内外网通信-集群外节点访问 pod ip_第1张图片

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设备解包
kubernetes内外网通信-集群外节点访问 pod ip_第2张图片
用法
服务端

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

缺点:流量通过隧道传输(类似于 open),效率较低。

你可能感兴趣的:(kubernetes,docker,容器网络,kubernetes,tcp/ip,容器)