前言
网络规划是一个 IT 新公司最首先要解决的基础设施问题,下面介绍某信息公司网络规划的真实案例:公司总体情况在 3 个城市有办公区,应用部署的服务器资源用的是华为云且服务都是在 k8s 集群内的,办公区的网络跟容器网络也是打通了的。所以大方向上需要有自己本地的办公网段+华为云网段 2类。
本地网络
现在办公区大部分都用笔记本+无线网线方案比较方便,有线的还需要施工布线、交换机设备的略显麻烦。
笔记本连接 wifi,自动分配 IP 接入企业办公网络采用的是 AP+AC 的组网方案。
AC:无线控制器。负责统一控制整个无线网络,进行网络功能设置,IP 的分配(DHCP)就是里面设置的。
AP:无线接入器。只负责网络连接,没有其他的多余功能,硬件设置主要围绕着无线射频进行,负载根据连接的终端数决定,因为使用多AP的方案,所以单个AP上的覆盖不会很高,依靠数量来解决覆盖不足,负载过高的问题。即使单个AP出现故障,这个AP上的终端,也可以移动到其他AP上,对终端的影响比较小。
AC+AP 解决了本地办公网的网络连接+IP 获取,我们有 3 个城市 + 华为云网络,所以还需要在出口部署一个防火墙,可以在防火墙里面配置相对应的网络策来实现3个城市内网相通以及和华为云网络的连通性问题。
设备型号:
- 北京用的是锐捷的:反馈不好用
- 天津、厦门用的是华为的:挺稳定的
vpc 网络(华为云侧网络)
虚拟私有云(Virtual Private Cloud,以下简称VPC),为云服务器、云容器、云数据库等资源构建隔离的、用户自主配置和管理的虚拟网络环境,提升用户云上资源的安全性,简化用户的网络部署。
可以在VPC中定义安全组、VPN、IP地址段、带宽等网络特性。用户可以通过VPC方便地管理、配置内部网络,进行安全、快捷的网络变更。同时,用户可以自定义安全组内与组间弹性云服务器的访问规则,加强弹性云服务器的安全保护。
我们在华为云也就是 vpc 网络里面有:虚拟机(部署一些有状态的中间件、大数据服务等)、容器服务(k8s)、华为云提供的数据看、ES、Kafaka 等服务。
上面说到了,k8s 集群里面的容器网络跟我们的办工网打通了,所以每个容器IP 在这个网络拓扑是扁平化的,不允许在任何地方出现重叠。
华为云上面的资源就上面那些,除此之外我们有 4 个研发环境,也要纳入网络规划考虑范围:
- 开发环境
- 测试环境
- 预生产环境
- 生产环境
开发、测试网络相通,预生产、生产网络相通
如何打通容器网络
我们的办公区、vpc 跟 k8s 集群的容器网络 是可直连的,正常理解的 k8s 但凡要跟集群外通信不得经过 ingress 吗?其实这就是采用了云厂商的魅力了,具体如何实现我们来捋一捋。
容器的网络模型可归纳为下面 3 种:
- 覆盖网络:在 IP 协议包上面额外封装一层协议,如 Flannel
- 基于 BGP 的无覆盖网络 / 基于 IPVlan 的 VPC 网络
- 云原生 2.0 网络
华为云要让容器网络扁平化采用的就是上面的 2、3 方案。
在方案 2(VPC网络)
- 节点内Pod间通信:ipvlan子接口分配给节点上的Pod,同节点的Pod间通信直接通过ipvlan直接转发。
- 跨节点Pod间通信:所有跨节点Pod间的通信通过默认路由到默认网关,借助VPC的路由转发能力,转发到对端节点上。
优点
- 由于没有隧道封装,网络问题易排查、性能较高
- 支持VPC内的外部网络与容器IP直通
缺点
- 节点数量受限于虚拟私有云VPC的路由配额【只能达到200个节点的水平】
- 每个节点将会被分配固定大小的IP地址段,存在一定的容器网段IP地址浪费【在网络规划、集群创建的过程要十分谨慎,无法修改】
- 无法直接利用VPC提供的负载均衡、安全组等能力
云原生 2.0 网络
云原生网络2.0是自研的新一代容器网络模型,深度整合了虚拟私有云VPC的弹性网卡(Elastic Network Interface,简称ENI)和辅助弹性网卡(Sub Network Interface,简称Sub-ENI)的能力,直接从VPC网段内分配容器IP地址,支持ELB直通容器,绑定安全组,绑定弹性公网IP,享有高性能。
简单说就是本身是虚拟网卡了,还可以再产生子网卡,硬生生的把本来不同层级的网络摊平了。宿主机跟宿主机上面的容器都是同一层级的网络了。
说明:
- 裸金属节点上Pod使用ENI网卡;ECS节点上Pod使用Sub-ENI网卡,Sub-ENI网卡通过VLAN子接口挂载在ENI上。
- 节点内Pod间通信:直接通过VPC的弹性网卡/弹性辅助网卡进行流量转发。
- 跨节点Pod间通信:直接通过VPC的弹性网卡/弹性辅助网卡进行流量转发。
优点
- 容器网络直接使用的VPC,网络问题易排查、性能最高。
- 支持VPC内的外部网络与容器IP直通。
- 可直接利用VPC提供的负载均衡、安全组、弹性公网IP等能力。【集群最高支持 2000个ECS节点,10万个容器。】
缺点
- 由于容器网络直接使用的VPC,消耗VPC的地址空间,创建集群前需要合理规划好容器网段。
方案2、3 在负载均衡上面的区别
方案 2 跟 3 的另一个比较大的区别在负载均衡中
从上面 2 张图可以看出,从集群外的网络访问集群内时,方案 2 比 方案 3 多了一层 service,方案 3 的弹性负载均衡直达容器所以性能更高。
方案 2 对应的是华为云的普通 cce 集群,方案3对应的是华为云的 turbo 集群。
网络拓扑
上面的详细列举了我们的整体网络情况,下面展示下整个全局网络的拓扑设计。
办公区网络
10.128.0.0/9
- 10.128.0.0/16 北京办公区
- 10.129.0.0/16 天津办公区
- 10.130.0.0/16 厦门办公区
工作区的大网段总共有 2^(32-9)= 8,388,608 的主机位,扣掉每个网段里面全 0 的广播地址,全 1 的默认网关,可分配的主机地址就是 8,388,608 -2 =8,388,606 个。
具体每个办公区 2^(32-16)-2 = 65534,相比总网段,每个城市的区域网络显得小很多,但是明显也够用了,剩下的为以后预留用。
华为云网络
10.0.0.0/9
- 公共网络(代码仓库这种需要用到)
- ECS 网络
容器网络
- 开发、测试网络(公用)
- 预生产网络
- 生产网络
此部分考虑到服务安全性就不太详细列举了(真实情况是太多懒得写),上面的每个网段都是一个 vpc,相同区域的不同 vpc 如果要通信可以用对等连接来实现,不同区域的不同 vpc 如果要通信要用云连接来实现。
VPN
回家后如果需要处理公司问题,需要通过 vpn 链接到公司内网。这边是公司自己用 openvpn 搭了一个 VPN 服务。
发表评论 取消回复