タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

著者:呉秘密

こんにちは!タングステンファブリックとKubernetes統合ガイドシリーズへようこそ、この記事では、5つのステップは、通常、仮想ネットワークを作成について説明します。
タングステンファブリックや記事のK8S統合ガイドシリーズは、あなたがTF中国のコミュニティによってレンダリングされ、あなたがタングステンファブリックとK8S統合の基本を理解するために設計されています。私たちは、少し関連する展開の経験、または問題を抱えている、私達に連絡してください。

アーキテクチャの導入、および初期状態のタングステンファブリックとKubernetes(K8S)クラスタは問題ありませんことを確認をした後、我々は仮想ネットワークを作成しようとし始めることができます。

ステップ1:名前空間を作成します。

K8Sでは、名前空間に属するリソースのほとんどは、我々は最初に、対応するポッド、サービス、および仮想ネットワークを作成し、名前空間を作成する必要があります。二つの新しい名前空間は、K8Sにマスターノードを記録するために、次のコマンドを実行し、テストNS1および試験NS2ました。

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

作成した後は、タングステンファブリック管理インターフェイスは、対応するプロジェクトが作成されK8S-TEST-NS1とK8S-テスト-NS2を見ることができます。

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

ステップ2:新しいIPAMを作成します。

あなたは、仮想ネットワークを作成するために、これに基づいて、あなたのプロジェクトのためのIPアドレス管理(IPAM)を作成する必要があります。

タングステンではファブリック管理インタフェースは「設定>ネットワーク> IPアドレスの管理」を選択し、プロジェクトを選択 - K8S-テスト-NS1をし、「作成」ボタンをクリックしてください。

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

必要とする名前とサブネット方法、二つの方法サブネットの方法がありますが、ユーザー定義を手動で結合する時にネットワークのサブネットを指定するために行くことです、フラットは直接サブネットのネットワークセグメントを作成し、2は、異なっていますあなたがIPプールの範囲を指定することができるユーザー定義は、フラットがサブネット間で直接で、デフォルトでは、フラットを使用することです。

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

ステップ3:仮想ネットワークを作成します。

在Tungsten Fabric管理界面选择“Configure > Networking > Networks”,并选择 k8s-test-ns1,然后单击“创建”按钮。
タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

如上图所示,就是完成了一个虚拟网络的创建,为了方便测试,再以相同的方式创建另一个网络 k8s-ns1-pod-net2 (10.10.20.0/24)。
タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

第4步:创建pod

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

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

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

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

执行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

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

第5步:网络连通性验证

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

首先进行互ping,验证连通性。测试结果如下截图,同一命名空间下,默认情况两个网络无法通信。
タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

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

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

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

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

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

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

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

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

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

现在需要给网络 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,具体操作如下:

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

再次验证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服务。
タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

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

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

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

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

默认情况下,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。

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します
在此验证pod nginx01-ns1-net01 与 nginx01-ns2-net01的网络连通性,两者在不同的命名空间,不同的network,验证结果是无法通信,具体见下面截图:
タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

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

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

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

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

再次验证,此时两个不同命名空间不同network的pod已经能够互相通信。
タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

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


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

タングステン生地+ K8S簡単に始めるために、一連---
最初の記事:TF超硬評価ガイド-準備論文
セカンド:Kubernetesサービスを通じて基本的なアプリケーションのための接続
パートIII:上級Kubernetes進入を介して外部アプリケーションを接続する
最初の4:Kubernetes名前空間分離を介して最初のアプリケーションを実現する
パートV:Kubernetesネットワークによるマイクロセグメンテーション戦略そのアプリケーション


タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します
マイクロ手紙に焦点:TF中国のコミュニティ
タングステンファブリックとK8S統合ガイドシュウは、仮想ネットワークを作成します

おすすめ

転載: blog.51cto.com/14638699/2474104