作者:吴明秘
目前成都创新互联公司已为上1000+的企业提供了网站建设、域名、虚拟空间、网站托管运营、企业网站设计、奉节网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。Hi!欢迎来到Tungsten Fabric与Kubernetes集成指南系列,本文介绍通常创建虚拟网络的五个步骤。
Tungsten Fabric与K8s集成指南系列文章,由TF中文社区为您呈现,旨在帮助大家了解Tungsten Fabric与K8s集成的基础知识。大家在相关部署中有什么经验,或者遇到的问题,欢迎与我们联系。
在做好架构部署,并确认Tungsten Fabric和Kubernetes(K8s)集群的初始状态没有问题后,就可以开始尝试创建虚拟网络了。
在K8s中,大部分的资源都隶属于一个命名空间,所以需要首先新建命名空间,然后再创建对应的pod,service,以及虚拟网络。在此新建两个命名空间,分别为 test-ns1 和 test-ns2,登录K8s的master节点执行以下命令:
创建成功后,在Tungsten Fabric管理界面可以看到对应的project被创建出来,k8s-test-ns1与k8s-test-ns2。
你需要为你的项目创建一个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。
在Tungsten Fabric管理界面选择“Configure > Networking > Networks”,并选择 k8s-test-ns1,然后单击“创建”按钮。
如上图所示,就是完成了一个虚拟网络的创建,为了方便测试,再以相同的方式创建另一个网络 k8s-ns1-pod-net2 (10.10.20.0/24)。
首先在名为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
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中文社区
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
当前标题:TungstenFabric与K8s集成指南丨创建虚拟网络-创新互联
新闻来源:https://www.cdcxhl.com/article48/csscep.html
成都网站建设公司_创新互联,为您提供网站设计公司、网站策划、用户体验、服务器托管、微信公众号、手机网站建设
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联