跨网段实现内网互通_办公环境下 kubernetes 网络互通方案

本文介绍了如何解决办公室网络与Kubernetes pod、svc网络不通的问题,通过在集群中添加节点并配置路由转发,实现了内网DNS解析到CoreDNS,确保网络可达。此外,还探讨了多种DNS解决方案,包括直接在问题节点上部署内网DNS或使用nginx ingress controller暴露CoreDNS的端口。
摘要由CSDN通过智能技术生成
38c06480b99a5b548aff66f5990d7ce8.png

在 kubernetes 的网络模型中,基于官方默认的 CNI 网络插件 Flannel,这种 Overlay Network(覆盖网络)可以轻松的实现 pod 间网络的互通。当我们把基于 spring cloud 的微服务迁移到 k8s 中后,无须任何改动,微服务 pod 可以通过 Eureka 注册后可以互相轻松访问。除此之外,我们可以通过 ingress + ingress controller ,在每个节点上,把基于 http 80端口、https 443端口的用户请求流量引入到集群服务中。

本文为圈友 @TangT 分享。

但是实际使用中,我们出现了以下需求:

  • 1.办公室网络 和 k8s pod 网络不通。开发在电脑完成某个微服务模块开发后,希望本地启动后,能注册到 k8s 中开发环境的服务中心进行调试,而不是本地起一堆依赖的服务。
  • 2.办公室网络 和 k8s svc 网络不通。在 k8s 中运行的 mysql、redis 等,无法通过 ingress 7层暴露,电脑无法通过客户端工具直接访问;如果我们通过 service 的 NodePort 模式,会导致维护量工作量巨大。

网络互通配置

k8s 集群中新加一台配置不高(2核4G)的 node 节点(node-30)专门做路由转发,连接办公室网络和 k8s 集群 pod、svc

  • node-30 IP 地址 10.60.20.30
  • 内网 DNS IP 地址 10.60.20.1
  • pod 网段10.244.0.0/24,svc 网段10.96.0.0/12
  • 办公网段 192.168.0.0/22

给 node-30节点打上污点标签(taints),不让 k8s 调度 pod 来占用资源:

kubectl taint nodes node-30 forward=node-30:NoSchedule

node-30节点,做snat:

# 开启转发# vim /etc/sysctl.d/k8s.confnet.ipv4.ip_forward = 1# sysctl -p# 来自办公室访问pod、service snatiptables -t nat -A POSTROUTING -s 192.168.0.0/22 -d 10.244.0.0/24 -j MASQUERADEiptables -t nat -A POSTROUTING -s 192.168.0.0/22 -d 10.96.0.0/12 -j MASQUERADE

在办公室的出口路由器上,设置静态路由,将 k8s pod 和 service 的网段,路由到 node-30 节点上

ip route 10.244.0.0 255.255.255.0 10.60.20.30ip route 10.96.0.0 255.240.0.0 10.60.20.30<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值