TF+K8s輕鬆上手丨通過Kubernetes的服務進行基本應用程序連接

本文所有相關鏈接https://tungstenfabric.org.cn/assets/uploads/files/tf-ceg-case1.pdf

這是所有Kubernetes CNI插件所能提供的最基礎和最根本的功能。應用程序Pods之間要能相互通信,而Kubernetes Services是確保Pods隨時間推移來實現應用程序規模性和可用性的一種方式。

使用場景

所有主要的CNI插件都提供基本的Pod到Pod的連通性以及某些服務類型,例如ClusterIP。

除此之外,Tungsten Fabric原生支持LoadBalancer。在AWS上運行時,LoadBalancer在清單中使用Service創建面向公衆的AWS ELB,從而使您的應用程序可從Internet一步訪問。

這也意味着在本地和所有主要的公共雲中,對所有集成Tungsten Fabric的Kubernetes,可以在應用程序中使用Kubernetes部署清單而無需更改。

部署

創建部署時,CNI與Kubernetes協同工作,爲每個應用程序Pod分配網絡IP地址,並將每個Pod“連接”到集羣網絡。

注意:大多數CNI通過創建一個overlay network來工作,這一網絡在大多數情況下都包含在單個Kubernetes集羣的邊界內。所以,不同集羣中的Pod無法直接通信。

在本文檔中我們不會介紹多集羣方案,但是Tungsten Fabric能夠支持此類配置。一次安裝Tungsten Fabric就可以同時服務於多個Kubernetes集羣。在這種情況下,即使Kubernetes集羣本身位於不同的位置,來自不同集羣的Pod也可以直接相互通信。

服務

Kubernetes中的服務是“公開運行在一組Pod上的應用程序的抽象方法”。在大多數情況下,服務是簡單的Round-Robin負載均衡器。它具有用於接收網絡請求的虛擬IP地址(“VIP”),以及接受這些請求轉發的零個或多個端點的IP地址。

在大多數情況下,服務會通過在運行的Pod上查找匹配的標籤(稱爲“選擇器”,Selectors)來自動發現屬於應用程序Pod的端點IP地址。

應用程序的部署和服務示例

確保您位於沙箱控制節點上,以root用戶身份登錄,並且位於正確的目錄中:

#確認您是root賬戶
whoami | grep root || sudo -s

#切換到清單目錄
cd /home/centos/yelb/deployments/platformdeployment/Kubernetes/yaml

查看cnawebapp-loadbalancer.yaml文件,查找以Kind: Deployment和 Kind: Service開頭的部分
less cnawebapp-loadbalancer.yaml
(使用箭頭/ PgUp / PgDn導航;按q退出)

注意:

  • spec.template.spec.containers.ports.containerPort在Deployments中顯示Pod將偵聽的TCP端口;
  • spec.ports 在服務中顯示服務的VIP將監聽的端口;
  • spec.selector在服務中會顯示服務要向其發送流量的Pod上的標籤。

接下來,部署我們的示例應用程序,看看會發生什麼:
kubectl create -f cnawebapp-loadbalancer.yaml

這將創建以下應用程序拓撲:
在這裏插入圖片描述
如果應用程序部署沒有錯誤,我們應該能夠看到:
所有Pod都有自己的IP地址,並且正在各自的端口上監聽:
在這裏插入圖片描述
所有服務都有VIP和正在監聽的端口:
在這裏插入圖片描述
所有服務都發現了各自的端點:
在這裏插入圖片描述
由於Tungsten Fabric提供了對Kubernetes的LoadBalancer服務支持,因此現在應該能夠從Internet連接到我們的應用程序。我們可以找出負載均衡器的公共DNS名稱:
在這裏插入圖片描述
讓我們通過將網絡瀏覽器指向該地址來進行檢查,可以看到應用位於:aa01af9988cc311e9badf06b57ebf630-1452353610.us-west-1.elb.amazonaws.com
在這裏插入圖片描述
成功了!

清理

使用該應用程序後,可以隨時取消部署:
kubectl delete -f cnawebapp-loadbalancer.yaml

回顧和下一步

在此用例中,我們使用Tungsten Fabric Kubernetes CNI插件並與AWS的Elastic Load Balancing集成,部署了示例應用程序,並且它可以從互聯網訪問。
如果這就是我們想要的,那麼目的已經達到了。但是,如果我們需要SSL卸載,或者想基於HTTP主機和/或路徑將傳入請求發送到不同的應用程序組件,則需要使用Kubernetes Ingress。用例2涵蓋了這一場景。(用例2的詳細內容近期發佈,敬請關注)

MORE 更多TF+K8s文章
第一篇:TF Carbide 評估指南–準備篇

關於Tungsten Fabric:
Tungsten Fabric項目是一個開源項目協議,它基於標準協議開發,並且提供網絡虛擬化和網絡安全所必需的所有組件。項目的組件包括:SDN控制器,虛擬路由器,分析引擎,北向API的發佈,硬件集成功能,雲編排軟件和廣泛的REST API。
關於TF中文社區:
TF中文社區由中國的一羣關注和熱愛SDN的志願者自發發起,有技術老鳥,市場老炮,也有行業專家,資深用戶。將作爲連接社區與中國的橋樑,傳播資訊,提交問題,組織活動,聯合一切對多雲互聯網絡有興趣的力量,切實解決雲網絡建設過程中遇到的問題。

關注微信:TF中文社區
郵箱:[email protected]
在這裏插入圖片描述

發佈了27 篇原創文章 · 獲贊 1 · 訪問量 1623
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章