通過Service訪問應用 (1)

通過Service訪問應用 (1)

目錄

通過Service訪問應用

  • 通過Pod IP訪問應用

  • 通過ClusterIP Service在集群內部訪問

通過Service訪問應用

通過之前的操作,應用部署完成了,我們的Demo網站已經成功啟動了,那麼如何訪問網站呢?

通過Pod IP訪問應用

我們可以通過Pod IP來訪問之前部署的網站,但是前提是我們需要知道Pod IP。我們可以通過“kubectl get”命令的參數“-o wide”來輸出相關的信息,比如Pod IP:

<code>kubectl get pods -lapp=demo -o wide/<code>
通过Service访问应用 (1)

如果網絡是通暢的,那麼我們可以在任意的節點上訪問我們的應用,如:

<code>curl --head http://10.0.2.12/<code>
通过Service访问应用 (1)

我們使用curl以get方式請求demo應用,返回請求頭為200,那麼表示我們已經成功訪問了Demo。如果你還不太相信,我們可以通過安裝了UI界面的CentOS節點服務器的瀏覽器上訪問這些Pod IP,如下所示:

通过Service访问应用 (1)

雖然我們通過Pod IP成功的訪問到了應用,但是Pod有生老病死,如果“死”了呢,我們如何訪問?Deployment會重建麼?我們來試一試:

<code>kubectl delete pods -lapp=demo/<code><code>kubectl get pods -lapp=demo -o wide/<code>
通过Service访问应用 (1)

很不幸的是,如上圖所示,POD IP變掉了。那麼意味著POD IP會隨著POD的生老病死而發生變化。而且,不僅存在這個問題,如果我們直接使用POD IP,那麼多個POD也變得毫無意義。那麼我們應該到底如何來訪問我們的應用呢?

通過ClusterIP Service在集群內部訪問

Kubernetes服務(Service)就是為此而抽象出來的,為了讓應用能夠穩定的輸出,Service應運而生。

Service在Kubernetes中是一個抽象的概念,它定義了一組邏輯上的Pod和一個訪問它們的策略(通常稱之為微服務)。Service是通過標籤選擇器來綁定一組Pod 的Endpoints(端點)對象,當Pod的IP發生變化,Endpoints也隨之變化。當Service接受到請求時,就能通過EndPoints找到請求轉發的目標Pod地址。也就是說,通常情況下,Service定義了集群IP和端口,EndPoints則維護了一組Pod IP和端口。

瞭解了這些,接下來我們就使用ClusterIP Service來訪問剛才的Demo應用。

ClusterIP Service是默認的Service類型,其通過集群的內部IP暴露服務,因此僅能在集群內部訪問,常用於數據庫等應用。

這裡,我們定義一個簡單的Service集群IP配置:

<code>apiVersion: v1/<code><code>kind: Service #資源類型/<code><code>metadata: #標準元數據/<code><code> name: demo-service #服務名稱/<code><code>spec: #規範定義/<code><code> type: ClusterIP #服務類型,不填寫此字段則默認為ClusterIP類型,也就是集群IP類型/<code><code> selector: #標籤選擇器/<code><code> app: demo #標籤/<code><code> ports: #端口/<code><code> - protocol: TCP #協議,能夠支持TCP和UDP/<code><code> port: 80 #當前端口/<code><code> targetPort: 80 #目標端口/<code>

接下來,我們來執行Service的創建並且分別查詢了Service和Endpoints:

<code>kubectl create -f clusterIPService.yaml/<code><code>kubectl get services demo-service -o wide/<code><code>kubectl get endpoints demo-service -o wide/<code>
通过Service访问应用 (1)

如上圖所示,我們創建了集群IP為“11.13.47.67”的Service,端口為80(通常情況下,我們將port和targetPort設置為相同的值)。同時我們通過Endpoints列表看到,Endpoints自動綁定了5個Pod IP。接下來我們試試在集群內(節點上)訪問:

通过Service访问应用 (1)

注意:如果我們需要在創建時設置Service固定IP該如何去設置呢?可以通過字段“spec.clusterIp”進行設置,值需要符合Service IP段要求。

瀏覽器非常完美的呈現了Demo。在集群內是可以訪問了,如果我們提供對外服務呢?比如我們希望我們的Demo被其他電腦訪問,以獲得用戶的讚賞,老闆的好評,那麼該如何處理呢?我們下一篇再來分析!

通过Service访问应用 (1)通过Service访问应用 (1)

如果喜歡作者的文章,請關注【麥扣聊技術】訂閱號以便第一時間獲得最新內容。本文版權歸作者和湖南心萊信息科技有限公司共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

文檔官網:docs.xin-lai.com

"


分享到:


相關文章: