TungstenFabric + K8Sは簡単シュウKubernetes名前空間の予備アプリケーションの分離によって達成始めるために

この記事では、すべてのPDFファイルをリンクします。https://163.53.94.133/assets/uploads/files/tf-ceg-case3.pdf

TungstenFabric + K8Sは簡単シュウKubernetes名前空間の予備アプリケーションの分離によって達成始めるために
Kubernetes名前空間は、「仮想」の方法は、構築されたクラスタをKubernetesです。何の人々はありませんが、名前空間や場所の名前空間の使用を使用する方法について説明しますが、ネットワークの範囲内でなし名前空間の分離場合、仮想クラスタを完了できません。

タングステンファブリックKubernetes CNIプラグインは、単離された名前空間のサポートを含みます。彼らの名前空間の外のポッドにアクセスすることはできません単独でのアプリケーションの名前空間に展開され、他のアプリケーションは、名前空間とそのポッドサービスにアクセスすることはできません。

利用シナリオ

Kubernetesを展開する方法であって、各開発チームは、この場合には、ほとんど利益クラスタ仮想化と名前空間の分離を別個Kubernetesクラスタを展開されています。

しかし、未使用容量は低いリソース使用効率をもたらすことができる、断片化されています。各クラスタは、独自の空き容量を持つ、クラスタ内で実行されている他のアプリケーションが利用可能な容量を使用することはできません。また、クラスタの数として、それは団結を維持するために必要な操作のオーバーヘッドを紹介します。最後に、それが遅く、物事を行うことができる新しいクラスタを、起動に時間がかかります。

それは予備容量を共有し、クラスタの数を減らすことができますかつ迅速に作成することができるので、名前空間は、これらの問題を解決するための良い方法です。また、インフラチームは、クラスタの管理を担当する、アイソレーションのレベルを提供することができ、および開発者の各チームは、独自の名前空間で動作させることです。

クラスタの仮想化を処理する場合、必要が三つの問題を解決するために:
仮想クラスタ(RBAC)アクセスすることができます(1);
(2)は、各仮想クラスタは、コンピューティング・リソースを使用することができますどのくらいの
仮想クラスタを可能にする(3)Webアプリケーション通信。

タングステンファブリックCNIプラグインこのセクションによってKubernetes目的と名前空間のためには、分離して説明すると、次のセクションでは、問題(3)を解決するためのネットワークポリシーを導入します。ビューの規制遵守ポイントの観点から、これは特に便利です。それは、ワークロードの分離を促すため、PCIコンプライアンスは、良い例です。

PCIコンプライアンスを達成しようとすると、重点分野の一つは狭いです。狭い目的は、「カード会員データ環境」(カード会員データ環境、CDE)と呼ばれているクレジットカード情報の処理に影響を与える可能性があるすべてのシステムを分離することです。

任意のワークロードや機器、CDEシステムの相互作用に属しどのような方法ですることができます。必要な分離のための決定的な重要性のネットワークセグメント、PCIコンプライアンスの考慮事項の数を削減するシステム。

Kubernetes名前空間容器ベースおよびプラットフォームKubernetesオーガナイザー、容器は、必要なアイソレーションを計算するPCIワークロードの範囲を減少させるために設けられてもよいです。Kubernetesは、ストレージソリューションについて単離された部分を提供します。しかし、Kubernetesは現在、この目的のために十分なネットワークの分離やチェックを提供していません。

タングステンファブリックCNIプラグインKubernetesためにKubernetes名前空間認識ネットワーク分離機能は、ネットワークトラフィックの名前空間に入る又は出るトラフィックのすべてのインスタンスを確認するために、ネットワーク機能仮想化(NFV)を制御することにより、管理チームを可能に提供するだけでなく。これは、次のような場合が呼び出される可能:CDEは、通信タイプ、チェックのレベルを調整するためのデータ・ストリームを分離の要求が出て許可する必要があります。

使用のネットワークの分離に例Kubernetes名前空間で見てみましょう。この場合、二つのコピーでは、デフォルトの名前空間のコピーに展開され、サンプルアプリケーション、新しい分離のネームスペースに別の展開を展開します。下に示すように、我々は、どのように分離株のネットワークトラフィックタングステンファブリック形態に表示されます。
TungstenFabric + K8Sは簡単シュウKubernetes名前空間の予備アプリケーションの分離によって達成始めるために

名前空間の分離を追加

作業を始める前に、すぐにコマンドを知るために私たちの必要性を含む、名前空間を使用する方法について説明しKubernetesドキュメントページを閲覧することが必要です。

すべてが完了した後、あなたはrootでログインし、正しいディレクトリに、サンドボックスの制御ノード上にあることを確認してください。

#确认您是root账户
whoami | grep root || sudo -s

#切换到清单目录
cd /home/centos/yelb/deployments/platformdeployment/Kubernetes/yaml

接下来,创建一个新清单,以描述我们新的隔离命名空间:
TungstenFabric + K8Sは簡単シュウKubernetes名前空間の予備アプリケーションの分離によって達成始めるために
这将创建一个名为dev-isolated.yaml的文件,它包括以上内容。请注意annotations部分——这将告诉Tungsten Fabric隔离新的命名空间。

继续创建该命名空间,并向Kubernetes配置文件添加相关内容,以便我们可以访问它:
#创建新的命名空间:
kubectl create -f dev-isolated.yaml

让我们快速浏览一下新的命名空间:
TungstenFabric + K8Sは簡単シュウKubernetes名前空間の予備アプリケーションの分離によって達成始めるために

注意Annotations字段;这向Tungsten Fabric CNI插件发出信号,它需要以不同的方式对待此命名空间。

我们可以简单地将此注释添加到现有命名空间以使其隔离吗?不幸的是没有,因为Tungsten必须做很多额外的工作才能设置一个隔离的新命名空间。更具体地说,必须创建一组单独的虚拟网络,此命名空间中的应用程序Pod将连接到该虚拟网络。

这样可以确保将网络隔离保持在底层水平上,而不是简单地通过流量过滤器之类的较弱方法。

将示例应用程序部署到隔离的命名空间中

接下来,我们将示例应用程序部署到已创建的隔离命名空间中:
kubectl create --namespace dev-isolated -f cnawebapp-loadbalancer.yaml

一旦应用程序pod启动,我们应该能够像上面用例1中所描述的那样从Internet访问我们的应用程序。

接下来,我们需要一些东西进行比较和对比;因此,将示例应用程序的另一个副本部署到default命名空间中:

kubectl create -f cnawebapp-loadbalancer.yaml

现在,我们有两个应用程序副本。一个在没有隔离的default命名空间中运行,另一个在dev-isolated命名空间中运行。

我们期望的行为有:

1.非隔离命名空间中的Pod和服务,应该可以从非隔离命名空间中的其他Pod(例如default和kube-system)访问;

2.非隔离命名空间中的服务,应该可以从隔离命名空间中运行的Pod访问;

3.隔离命名空间中的Pod和服务,只能从相同命名空间中的Pod访问;

4.对于以上的情况有个例外:在隔离的命名空间里的LoadBalancer的服务可以被外部世界访问。

我们将逐个验证这些行为。

非隔离命名空间中的Pod应该能够相互通信

我们知道Pod可以与在default命名空间中的服务通信——这就是示例应用程序的工作方式。但是跨命名空间呢?由于我们位于沙箱中,因此可以使用kube-system命名空间中的一个Pod来尝试访问在default非隔离命名空间中运行的应用程序中的Pods和Services :

#获得kube-system pods里的tiller-deploy的名字:
src_pod=$(kubectl get pods --namespace kube-system | grep tiller | awk '{print $1}')

#找到“default”命名空间里的“yelb-ui”pod的IP:
dst_pod_ip=$(kubectl get pods -o wide | grep yelb-ui | awk '{print $6}')

#让tiller-deploy去ping yelb-ui:
kubectl exec --namespace kube-system -it ${src_pod} ping ${dst_pod_ip}

最后一条命令的输出应类似于:

PING 10.47.255.246 (10.47.255.246): 56 data bytes
64 bytes from 10.47.255.246: seq=0 ttl=63 time=1.291 ms
64 bytes from 10.47.255.246: seq=1 ttl=63 time=0.576 ms

用^ C取消命令。

这确认了非隔离命名空间中的Pod可以相互到达。

隔离的Pod应该能够到达非隔离的服务

#获得运行在“default”命名空间里的“yelb-ui”服务的集群IP地址:
default_yelb_ui_ip=$(kubectl get svc --namespace default -o wide | grep yelb-ui | awk '{print $3'})

#获得"dev-isolated" 命名空间的"yelb-appserver" Pod的名字
src_pod2=$(kubectl get pods --namespace dev-isolated | grep yelb-appserver | awk '{print $1}')

#在“yelb-appserver”运行“curl” ,尝试访问“default”命名空间的服务IP:
kubectl exec -it -n dev-isolated ${src_pod2} -- /usr/bin/curl http://${default_yelb_ui_ip}
我们应该在yelb-ui主页上看到大约10行HTML代码,这表明dev-isolated命名空间中的Pod 可以与非隔离default命名空间中的服务通信。

隔离命名空间中的Pod不能从其他命名空间访问

现在,让我们尝试从同一个tiller-deploy Pod去ping 运行在dev-isolated命名空间的yelb-ui Pod:

#获得位于“dev-isolated”命名空间的“yelb-ui”pod 的IP:
isolated_pod_ip=$(kubectl get pods --namespace dev-isolated -o wide | grep yelb-ui | awk '{print $6}')

#..尝试ping它:
kubectl exec --namespace kube-system -it ${src_pod} ping ${isolated_pod_ip}

您应该看到该命令被“卡住”了,没有显示任何响应,因为这次我们正尝试达到某些无法达到的目的地,Tungsten Fabric正在阻止这一访问。

按^ C取消命令。

再多试一下——尝试从位于default命名空间的yelb Pods去ping隔离的yelb Pods和服务。一切都按预期工作了吗?

隔离命名空间中的LoadBalancer服务应该可以在外部访问

但是,如果我们无法访问它,那么在一个隔离的命名空间中运行应用程序就没有多大意义了。因此,在独立命名空间本dev-isolated的yelb副本应通过LoadBalancer Service yelb-ui 供Internet使用。让我们测试一下:

kubectl get svc --namespace dev-isolated -o wide | grep yelb-ui | awk '{print $4}'

它应该显示类似afd9047c2915911e9b411026463a4a33-777914712.us-west-1.elb.amazonaws.com 的结果;将您的浏览器指向它,看看我们的应用程序是否可被加载!

清理

一旦进行了足够的测试,可以随时清理:

#删除两个“yelb”副本:
kubectl delete -f cnawebapp-loadbalancer.yaml
kubectl delete --namespace dev-isolated -f cnawebapp-loadbalancer.yaml

#删除独立的命名空间和它的清单:
kubectl delete -f dev-isolated.yaml
rm -f dev-isolated.yaml

回顾和下一步

Kubernetes命名空间已被设计为虚拟化Kubernetes集群的一种方式。没有网络,任何虚拟化都是不完整的,而Tungsten Fabric对隔离命名空间的支持提供了此功能。

但是,在您需要在命名空间中实施应用程序网络安全策略时,隔离的命名空间提供的粒度可能较粗。

也有一些更精细的控件,我们将在用例4的文章中进行详细介绍。


タングステンについて生地:
タングステンファブリックプロジェクトは、標準プロトコルの開発に基づいているオープンソースプロジェクトの契約であり、およびネットワークの仮想化とネットワークセキュリティに不可欠のすべてのコンポーネントを提供します。プロジェクトのコンポーネントには、APIのリリース、ハードウェアの統合、クラウドオーケストレーションソフトウェアと豊富なRESTのAPIの北にSDNコントローラ、仮想ルーター、分析エンジンを、。

中国のコミュニティのTFについて:
TF自発的にボランティアの中国の関心と愛SDNグループによって開始され、中国社会、熟練したベテラン、古い銃市場、業界の専門家と経験豊富なユーザーが存在します。そして中国は、地域社会をつなぐブリッジとして機能情報の普及、質問を提出し、活動を整理し、インターネット曇りに興味を持ってすべての力を団結、効率的プロセスで遭遇クラウドネットワーキングの問題を解決します。

TungstenFabric + K8Sは簡単シュウKubernetes名前空間の予備アプリケーションの分離によって達成始めるために

マイクロ手紙に焦点:TF中国のコミュニティ
TungstenFabric + K8Sは簡単シュウKubernetes名前空間の予備アプリケーションの分離によって達成始めるために

おすすめ

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