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中文社区

原文地址:https://blog.51cto.com/14638699/2474104

时间: 2024-11-09 16:39:46

Tungsten Fabric与K8s集成指南丨创建虚拟网络的相关文章

Tungsten Fabric与K8s集成指南丨创建安全策略

作者:吴明秘 Hi!欢迎来到Tungsten Fabric与Kubernetes集成指南系列,本文介绍如何创建安全策略.Tungsten Fabric与K8s集成指南系列文章,由TF中文社区为您呈现,旨在帮助大家了解Tungsten Fabric与K8s集成的基础知识.大家在相关部署中有什么经验,或者遇到的问题,欢迎与我们联系. 安全策略可以通过限制端口.网络协议等方式控制任意pod之间的访问,以及pod与service之间的访问.在K8s集群中安全策略对应的是Network Policy,在T

Tungsten Fabric与K8s集成指南丨部署准备与初始状态

Hi!欢迎来到Tungsten Fabric与Kubernetes集成指南系列,本文介绍K8s组件和Tungsten Fabric组件部署的准备工作,以及运行的初始状态.Tungsten Fabric与K8s集成指南系列文章,由TF中文社区为您呈现,旨在帮助大家了解Tungsten Fabric与K8s集成的基础知识.大家在相关部署中有什么经验,或者遇到的问题,欢迎与我们联系. 说明:文中部分内容涉及到"Contrail",Tungsten Fabric原名为OpenContrail,

Windows Azure系列 -《基础篇》- 创建虚拟网络

如何在Windows Azure中创建虚拟网络,以构建云环境中的虚拟局域网: 1.登陆Windows Azure平台,点击侧边栏网络按钮,在中间点击"创建虚拟网络". 2.在接下来的配置页面,填写虚拟网络的名称.选择地理外置和地缘组(如果已有),没有则选择创建新的地缘组. 3.接下来填写DNS服务器地址(没有则留空) 4.规划和配置IP网络,选择适用的地址空间. 5.最后点击确认按钮完成. Windows Azure系列 -<基础篇>- 创建虚拟网络,布布扣,bubuko.

11-SCVMM2012之创建虚拟网络

4.6.创建虚拟网络SCVMM可以给Hyper-V主机配置逻辑交换机或者标准交换机.所谓标准交换机,就是在Hyper-V主机上配置的虚拟网络,无法通过SCVMM进行端口带宽配置,如果要为虚拟机带宽做配置,只能通过Hyper-V管理器或者群集管理器单独为VM做配置.通过SCVMM为Hyper-V建立标准交换机,映射的是Hyper-V主机上的某块网卡,如果主机没有做NIC组,要充分利用多网卡,就需要做多个标准交换机,或者建立NIC组,将标准交换机映射到虚拟的NIC组上,这些工作完全是手动的,对于少数

13.CentOS7下Openstack-Train版本安装--创建虚拟网络

1.准备工作 1.1.在控制节点与计算节点互相ping对方主机名与IP地址 1.2.在控制节点与计算节点删除NetworkManager软件包 yum remove NetworkManager -y 2.创建虚拟网络 2.1.创建网络 [[email protected] ~]# source admin-openrc [[email protected] ~]# openstack network create --share --external --provider-physical-n

Tungsten Fabric架构和最新技术进展丨TF成立大会演讲实录

本文整理自瞻博网络杰出工程师Sukhdev Kapur在"TF中文社区成立暨第一次全员大会"上的演讲,增加了对于TF功能的描述,pdf点击下载.https://tungstenfabric.org.cn/assets/uploads/files/powering-edge-cloud-and-multi-cloud-with-tungsten-fabric-sukhdev-kapur.pdf 更多会议资料,请在"TF中文社区"公众号后台回复"成立大会&qu

Tungsten Fabric+K8s轻松上手|TF Carbide评估指南--准备篇

Tungsten Fabric项目是一个开源项目协议,它基于标准协议开发,并且提供网络虚拟化和网络安全所必需的所有组件.项目的组件包括:SDN控制器,虚拟路由器,分析引擎,北向API的发布,硬件集成功能,云编排软件和广泛的REST API. 本文所有相关链接pdf:https://tungstenfabric.org.cn/assets/uploads/files/tf-ceg-with-link.pdf 本指南的作用是什么? 本指南是为应用程序开发人员或计算基础结构平台工程师设计的,考虑了Ku

OpenStack上海峰会观感丨Tungsten Fabric在2019开源基础设施峰会

11月4日至6日,来自世界各地的开源用户和贡献者齐聚上海世博中心,参加2019 OpenStack开源基础设施峰会. 据说有上万人赶来参会,并且中国移动.中国电信.中国联通三大运营商,华为.腾讯.百度.阿里巴巴等大厂都亮相了峰会演讲,还有众多国内知名的云计算公司现身,与来自全球的社区开发者们,就开源基础设施的开发与应用进行深度交流. 这个峰会的特色在于,它不是传统的技术展示.产品展览或者厂商主导的活动,而是由开源社区和用户驱动,这个在现场真是很有体会. 按用户用例划分,峰会设立了100多场会议以

Tungsten Fabric架构解析丨TF支持API一览

Tungsten Fabric支持以下API:? ?用于控制器配置的REST API ?映射到REST配置API的Python绑定 ?用于访问分析数据的REST API 下面我们逐一进行描述. 用于控制器配置的REST API 通过在Tungsten Fabric外部虚拟IP地址的端口8082上访问的REST API,可以获得Tungsten Fabric群集的所有配置. 用户可以使用HTTP GET调用来检索资源列表或其属性的详细信息. 数据作为JSON对象返回.?可以通过发送包含新对象属性的