書名: OpenShift高效運維:SRE視角的集群和分布式系統(tǒng)管理作者名: (德)里克·拉考等本章字數(shù): 859字更新時間: 2024-04-25 20:09:03
3.2 訪問已部署的服務
在部署了3.1節(jié)所描述的街機平臺應用程序的所有三個服務之后,你現(xiàn)在應該有三個服務在arcade命名空間中運行:

所有三個服務都公開pod的端口8080。對于game和platform,你可以使用你的服務知識來公開正確的端口。在highscore服務的情況下,OpenShift從它構建的容器中檢測到公開的端口。
3.2.1 從其他pod訪問服務
這三個服務的類型都是ClusterIP,它允許集群的其他組件訪問它。對于僅由在集群內相互通信的組件使用的服務,這很有幫助。為了測試這一點,你可以部署一個pod來與該服務交互:

該命令將在集群中創(chuàng)建一個pod,你可以通過該pod使用curl命令查詢其中一個服務。服務的主機名是你給服務的名稱,所以在這種情況下,你可以查詢http://platform:8080以訪問平臺We b服務:

前面的oc run命令在命名空間arcade中創(chuàng)建了一個pod,其中也部署了arcade平臺的所有服務。這就是為什么你可以通過將服務名稱指定為主機名來訪問該服務。如果你在另一個命名空間中創(chuàng)建curl pod,例如default命名空間,則不可能這樣做,如下面的代碼片段所示:

如你所見,default命名空間中的curl pod無法解析主機名platform。但是,我們仍然可以通過指定服務的完整內部域名來查詢不同命名空間中的服務:

OpenShift服務的內部DNS名稱設置為<service-name>.<name-space>.svc.cluster.local。
根據(jù)你正在使用的集群的網(wǎng)絡配置,跨特定命名空間的通信可能會被阻止。NetworkPolicy可用于允許或阻止特定命名空間的服務之間的通信。
3.2.2 請求的分配
在3.1節(jié)中,你將game部署擴展到三個運行的pod。如果你現(xiàn)在還沒有這樣做,或者縮小它,那么使用下面的命令來擴大它:

OpenShift將在服務的所有端點上分發(fā)請求。為了使其可見,game部署將頭文件instance-ip寫入響應,你可以從curl pod中查詢。使用以下命令列出game服務的所有端點:

下面的命令使用curl命令運行一個無限循環(huán),向game服務發(fā)送HTTP請求:

-i標志告訴curl打印響應頭。curl命令的每個輸出都使用grep進行過濾,以便只輸出響應頭instance-ip。這將產(chǎn)生一個列表,顯示請求的分布。
在命令的輸出中可以看到,請求隨機分布到所有三個部署的pod中。
按Ctrl+C退出循環(huán)。
instance-ip頭是出于本章的目的而添加的自定義頭。如果你想在自己的應用程序中復制這一點,那么可以在NGINX配置中添加以下行:

但是,我們不建議在生產(chǎn)部署中使用這種方法,而只是為了可視化哪個端點接收到請求。
- 深度學習訓練營 21天實戰(zhàn)TensorFlow+Keras+scikit-learn
- 軟件需求分析實戰(zhàn)
- ODPS權威指南 阿里大數(shù)據(jù)平臺應用開發(fā)實踐
- Android應用安全防護和逆向分析
- SQL Server應用與開發(fā)范例寶典
- 搜索引擎與程序化廣告:原理、設計與實戰(zhàn)
- Unity手機游戲開發(fā):從搭建到發(fā)布上線全流程實戰(zhàn)
- 軟件開發(fā)大講堂·從入門到精通-第一輯(套裝共5冊)
- 鳳凰項目:一個IT運維的傳奇故事
- 36個創(chuàng)意電子小制作:安全衛(wèi)士
- 構建移動網(wǎng)站與APP:ionic移動開發(fā)入門與實戰(zhàn) (跨平臺移動開發(fā)叢書)
- Android驅動開發(fā)與移植實戰(zhàn)詳解
- 獵豹行動:硝煙中的敏捷轉型之旅
- 大數(shù)據(jù)測試技術與實踐
- 數(shù)據(jù)分析之道: 用數(shù)據(jù)思維指導業(yè)務實戰(zhàn)