k8s网络与本地开发环境网络互通方案

现状
k8s集群内是有一套完整网络环境,我们不能直接通过IP访问到k8s集群内的pod 或者service,只能通过nodeport 或者ingress 才能访问到服务.

痛点
开发人员进行微服务开发的时候需要通过服务发现进行Pod级服务的直接访问,但是现在k8s网络没办法做到直接访问pod 或者service的ip

解决方案
对于打通k8s网络与我们的开发网络根据k8s node 机器所在的网络情况 有以下几种方案:

本机静态路由表
路由器配置静态路由表
VPN 桥接接入
1. 本机静态路由表
当 k8s node 所在网络与开发网络在同一个子网内时,可以通过配置本机的静态路由表 直接访问到k8s集群内pod 以及service
由于 k8s node 节点上都自动开启了 内核路由转发功能的,所以只要配置静态路由表 转发到 任意一台node 节点即可,操作如下:
k8s 集群环境:

node: 10.200.1.227/24
--service-cidr=172.16.0.0/16
--pod-network-cidr=192.168.0.0/16



windows 添加静态路由表命令
route add -p 192.168.0.0 mask 255.255.0.0 10.200.1.227
route add -p 172.16.0.0 mask 255.255.0.0 10.200.1.227

 

 

 

 


2. 在路由器上设置静态表
第一种设置只能针对本机有效,如果想让在该网络内所有机器都可以直接访问k8s集群内 pod service的话,可以在路由器的静态路由表中增加静态路由
网络 192.168.0.0 子网掩码 255.255.0.0 网关 10.200.1.227
网络 172.16.0.0 子网掩码 255.255.0.0 网关 10.200.1.227

3. 桥接VPN
当k8s 和本地开发环境网络不在同一个 局域网内的话, 就没有办法做到通过静态路由进行转发
只能
如果正常在k8s集群内部署一个vpn的话 只能实现 开发环境访问k8s集群内 正常,但是无法实现集群内访问开发环境的集群,所以需要 采用桥接VPN+ 静态路由 双重策略下,才能实现互相都可以直接使用ip进行访问

posted @ 2023-03-09 14:58  py哥  阅读(329)  评论(0编辑  收藏  举报