暴露Pod IP地址的原理为在发起访问的主机上或在路由器上添加静态路由,本文以非集群内的物理主机192.168.200.112访问上文中MySQL Pod为例(集群master节点为centos-10,IP地址为192.168.200.10),在192.168.200.112主机上添加一条静态路由,使本机上所有对MySQL Pod(10.99.0.0/16)的访问,指向K8s集群所在的master节点192.168.200.10 :
| route add -net 10.99.0.0/16 gw 192.168.200.10
ping 10.99.0.15
|
| PING 10.99.0.15 (10.99.0.15) 56(84) bytes of data.
64 bytes from 10.99.0.15: icmp_seq=1 ttl=62 time=2.38 ms
64 bytes from 10.99.0.15: icmp_seq=2 ttl=62 time=1.16 ms
|
若添加静态路由时提示SIOCADDRT: Network is unreachable错误,但是目标IP地址实际可ping通,则可能原因为目标IP地址(192.168.201.150)和主机IP地址(192.168.200.112)不在同一级局域网内的原因导致。
例如192.168.201.150上有个Pod IP地址在10.67.0.0/16网段的K8s集群部署:
| route add -net 10.67.0.0/16 gw 192.168.201.150
|
| SIOCADDRT: Network is unreachable
|
| PING 192.168.201.150 (192.168.201.150) 56(84) bytes of data.
64 bytes from 192.168.201.150: icmp_seq=1 ttl=63 time=0.189 ms
64 bytes from 192.168.201.150: icmp_seq=2 ttl=63 time=0.147 ms
|
详细信息请参见《Kube-OVN组件 用户指南》中“Pod IP地址直接对外暴露”章节。