千家信息网

Tungsten Fabric与K8s集成指南丨创建虚拟网络

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,作者:吴明秘Hi!欢迎来到Tungsten Fabric与Kubernetes集成指南系列,本文介绍通常创建虚拟网络的五个步骤。Tungsten Fabric与K8s集成指南系列文章,由TF中文社区为
千家信息网最后更新 2025年02月01日Tungsten Fabric与K8s集成指南丨创建虚拟网络

作者:吴明秘

Hi!欢迎来到Tungsten Fabric与Kubernetes集成指南系列,本文介绍通常创建虚拟网络的五个步骤。
Tungsten Fabric与K8s集成指南系列文章,由TF中文社区为您呈现,旨在帮助大家了解Tungsten Fabric与K8s集成的基础知识。大家在相关部署中有什么经验,或者遇到的问题,欢迎与我们联系。

在做好架构部署,并确认Tungsten Fabric和Kubernetes(K8s)集群的初始状态没有问题后,就可以开始尝试创建虚拟网络了。

第1步:新建命名空间

在K8s中,大部分的资源都隶属于一个命名空间,所以需要首先新建命名空间,然后再创建对应的pod,service,以及虚拟网络。在此新建两个命名空间,分别为 test-ns1 和 test-ns2,登录K8s的master节点执行以下命令:

创建成功后,在Tungsten Fabric管理界面可以看到对应的project被创建出来,k8s-test-ns1与k8s-test-ns2。

第2步:新建IPAM

你需要为你的项目创建一个IP地址管理(IPAM),基于此来创建一个虚拟网络。

在Tungsten Fabric管理界面选择"Configure > Networking > IP Address Management",并选择project - k8s-test-ns1,然后单击"创建"按钮。

其中Name和Subnet Method为必填项,Subnet Method有两种方式,User Defined 是在绑定网络的时候再去手工指定子网网段,Flat 是直接创建子网网段,两者不同的是,User Defined可以指定IP池的范围,Flat则是直接使用整个子网网段,默认是使用Flat。

第3步:新建虚拟网络

在Tungsten Fabric管理界面选择"Configure > Networking > Networks",并选择 k8s-test-ns1,然后单击"创建"按钮。

如上图所示,就是完成了一个虚拟网络的创建,为了方便测试,再以相同的方式创建另一个网络 k8s-ns1-pod-net2 (10.10.20.0/24)。

第4步:创建pod

首先在名为test-ns1的命名空间上创建一个pod,指定网络为 k8s-ns1-pod-net01,配置如下:

然后再创建一个基于虚拟网络k8s-ns1-pod-net02的pod,配置如下:

执行kubectl的创建命令之后,两个pod都创建成功,并且容器的IP地址分别为:
属于虚拟网络 k8s-ns1-pod-net01 (10.10.10.0/24)的pod 10.10.10.1
属于虚拟网络 k8s-ns1-pod-net02 (10.10.20.0/24)的pod 10.10.20.1

第5步:网络连通性验证

1、验证同一命名空间不通网络pod之间网络连通性

首先进行互ping,验证连通性。测试结果如下截图,同一命名空间下,默认情况两个网络无法通信。

需要通信则必须在Tungsten Fabric上添加一个路由器来连接网络 k8s-ns1-pod-net01 和 k8s-ns1-pod-net02,如下所示:

路由器创建完成后再验证两个网络的连通性,结果是两个pod能够互相通信。

2、验证同一命名空间下pod到service之间的网络连通性

默认情况下,除了 k8s-default-pod-network 之外,其他的虚拟网络是无法连接到K8s的service网络的,通过请求kube-system中的coredns服务来验证,命令为 nslookup kube-dns.kube-system,因为是跨命名空间去解析域名,所以需要在域名中添加命名空间名称后缀(如果pod是在kube-system中,那么执行nslookup kube-dns即可),具体验证情况如下:

若需要让k8s-ns1-pod-net01 网段的pod可以访问到K8s的service网络,那么就需要添加一条TF policy,k8s-default项目下的Policies -- k8s-default-service-np,具体策略规则如下图所示,意味着所有添加了此条规则的网络都可以无限制的访问到k8s的service网络的所有端口。

现在需要给网络 k8s-ns1-pod-net01添加 k8s-default-service-np 这条策略,让它可以访问k8s的service网络。

Configure --> Networking --> Networks, 选择k8s-test-ns1项目,编辑network k8s-ns1-pod-net01, 附加一条Network Policy -- k8s-default-service-np,具体操作如下:

再次验证pod到service之间的网络连通性,此时处在网络k8s-ns1-pod-net01的pod nginx01-ns1-net01 (10.10.10.1) 是可以直接通过请求service的ClusterIP:PORT(coredns服务)来解析域名,而k8s-ns1-pod-net02 没有附加k8s-default-service-np,所以pod nginx01-ns1-net02 (10.10.20.1) 是仍然无法访问service里面的coredns服务。

3、验证不同命名空间下pod之间的网络连通性

同一命名空间下的两个网络之间的通信,跟不同命名空间下的两个网络之间的通信是有一些区别的,因为不同命名空间的情况下,无法通过新建TF Router来连接两个网络,所以必须通过TF Policy 来实现不同命名空间下的两个网络之间的互通。

之前的步骤中已经创建了两个命名空间 (test-ns1与test-ns2),并且test-ns1里面已经有了两个网络,所以需要在test-ns2中去新建一个网络。新建的网络为 k8s-ns2-pod-net01 (20.10.10.0/24)。

默认情况下,k8s-ns2-pod-net01 (20.10.10.0/24) 与 k8s-ns1-pod-net01 (10.10.10.0/24),k8s-ns1-pod-net02 (10.10.20.0/24) 都是无法通信的,现在需要在网络k8s-ns2-pod-net01 (20.10.10.0/24)中新建两个pod。


在此验证pod nginx01-ns1-net01 与 nginx01-ns2-net01的网络连通性,两者在不同的命名空间,不同的network,验证结果是无法通信,具体见下面截图:

若需要让这两个不同命名空间不同network的pod能够互相通信,则需要添加如下的TF Policies:

Contrial Network Policy 创建好之后,再分别将它附加到网络 k8s-ns1-pod-net01和k8s-ns2-pod-net01。

再次验证,此时两个不同命名空间不同network的pod已经能够互相通信。

(作者来自深圳市天源景云科技有限公司)


Tungsten Fabric+K8s集成指南系列文章---
第一篇:部署准备与初始状态

Tungsten Fabric+K8s轻松上手系列文章---
第一篇:TF Carbide 评估指南--准备篇
第二篇:通过Kubernetes的服务进行基本应用程序连接
第三篇:通过Kubernetes Ingress进行高级外部应用程序连接
第四篇:通过Kubernetes命名空间实现初步的应用程序隔离
第五篇:通过Kubernetes网络策略进行应用程序微分段



关注微信:TF中文社区

网络 空间 两个 验证 不同 通信 之间 情况 选择 指南 应用程序 程序 网段 应用 服务 管理 命令 域名 文章 界面 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 360网络安全大学校企合作 云服务器数据库导入数据库 网络安全宣传衣服 点赞软件开发多少钱 自己搭建部落冲突服务器违法吗 江苏通讯软件开发有哪些 网络安全小学生锦囊妙计 小型超市库存管理数据库 邮件服务器防护 网络安全法只适用于中国吗 长春智能边缘计算服务器直销价格 超聚变服务器品牌与华为关系 互联网和现代科技项目 access数据库查找窗体 方舟找服务器 数据库索引的优点缺点 进行网络安全法律法规教育 数据库DB是 数据库分布式架构 无锡分布式服务器介绍 云服务器怎样帮助您优化成本 国际上最著名的三大核苷酸数据库 上海网络安全管理员 五种截取数据库名称 经开区网络安全实施方案 南昌软件开发人员的月薪 海南计算机网络技术岗位招聘 奥蒂斯电梯服务器怎么清故障 东京奥运会网络安全事故 悟空识字突然连不上服务器了
0