天天看點

通過Service通路應用 (1)

目錄

通過Service通路應用 

  • 通過Pod IP通路應用 
  • 通過ClusterIP Service在叢集内部通路 

 通過Service通路應用

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

通過Pod IP通路應用

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

kubectl get pods -lapp=demo -o wide      
通過Service通路應用 (1)

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

curl --head http://10.0.2.12           
通過Service通路應用 (1)

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

通過Service通路應用 (1)

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

kubectl delete pods -lapp=demo
kubectl get pods -lapp=demo -o wide      

很不幸的是,如上圖所示,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配置:

apiVersion: v1
kind: Service #資源類型
metadata: #标準中繼資料
  name: demo-service #服務名稱
spec: #規範定義
  type: ClusterIP #服務類型,不填寫此字段則預設為ClusterIP類型,也就是叢集IP類型
  selector: #标簽選擇器
    app: demo #标簽
  ports:  #端口
  - protocol: TCP #協定,能夠支援TCP和UDP
    port: 80  #目前端口
    targetPort: 80 #目标端口      

接下來,我們來執行Service的建立并且分别查詢了Service和Endpoints:

kubectl create -f clusterIPService.yaml
kubectl get services demo-service -o wide
kubectl get endpoints demo-service -o wide      
通過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被其他電腦通路,以獲得使用者的贊賞,老闆的好評,那麼該如何處理呢?我們下一篇再來分析!

往期内容連結

Docker+ Kubernetes已成為雲計算的主流(二十五)

容器化之後如何節省雲端成本?(二十六)

了解Kubernetes主體架構(二十七)

使用Minikube部署本地Kubernetes叢集(二十八)

使用kubectl管理k8s叢集(二十九)

使用Kubeadm建立k8s叢集之部署規劃(三十)

使用Kubeadm建立k8s叢集之節點部署(三十一)

叢集故障處理之處理思路以及健康狀态檢查(三十二)

叢集故障處理之處理思路以及聽診三闆斧(三十三)

開源導入導出通用庫Magicodes.ExporterAndImporter釋出

使用Kubectl部署應用

作者:雪雁

出處:http://www.cnblogs.com/codelove/

溝通管道:程式設計交流群<85318032> 産品交流群<897857351>

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

靜聽鳥語花香,漫賞雲卷雲舒。

繼續閱讀