千家信息网

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

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,作者:吴明秘Hi!欢迎来到Tungsten Fabric与Kubernetes集成指南系列,本文介绍通常创建虚拟网络的五个步骤。Tungsten Fabric与K8s集成指南系列文章,由TF中文社区为
千家信息网最后更新 2024年11月26日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安全错误 数据库的锁怎样保障安全 小学生网络安全升旗稿 网络安全会遇到的问题 新乡市浩瀚网络技术有限公司 pdb数据库无已知结构的蛋白 互联网科技带给我们的好处和坏处 大兴全球软件开发大会 软件开发商业报价 海珠软件开发专业技校院校 数据库修改附加信息 安徽新游创梦网络技术 软件开发有哪几个步骤 中国版我的世界小游戏服务器编号 燃烧的远征比斯巨兽服务器 软件开发都分什么工种 学校网络安全应急及容灾备份方案 广电网络安全复查报告 ccer数据库收费标准 电信机顶盒改linux服务器 ccle数据库干什么的 高科技互联网项目商业模式 聊城软件开发工作多少钱 浪潮服务器硬件唯一标识 宽带连接的服务器名称怎么编辑 深圳市软件开发行业现状 小鹿吾爱网络技术站 青岛网站服务器配置 apache 服务器负载 智控管理服务器的软件著作权证书 软件开发人员手册 网络安全宣教活动总结
0