Kubernetes Service 定義了這樣一種抽象:一個 Pod 的邏輯分組,一種可以訪問它們的策略,通常稱為微服務。這一組 Pod 能夠被 Service 訪問到,通常是通過 Label Selector 來實現。
在 Kubernetes 中,pod 雖然擁有獨立的 IP, 但 pod 會快速地建立和刪除,因此,通過 pod 直接對外界提供服務不符合高可用的設計準則。通過 service 這個抽象,Service 能夠解耦 frontend(前端)和 backend(後端) 的關聯,frontend 不用關心 backend 的具體實現,從而實現松耦合的微服務設計。
更多詳細的原理,請參見Kubernetes service。
前提條件
您已經成功建立一個 Serverless Kubernetes 叢集,參見建立 Serverless Kubernetes 叢集。
步驟 1 建立 deployment
使用鏡像建立一個 deployment,本例中建立 serverless-app-deployment。具體操作參見使用鏡像建立應用。
步驟 2 建立服務
- 登入 Container Service管理主控台。
- 在 Kubernetes 菜單下,單擊左側導覽列中的 ,進入服務列表頁面。
- 選擇所需的叢集和命名空間,單擊頁面右上方的建立。
- 在彈出的建立服務對話方塊中,進行配置。
- 名稱:輸入服務的名稱,本例中為 serverless-service。
- 類型:選擇服務類型,即服務訪問的方式。目前僅支援負載平衡,即 LoadBalancer,指阿里雲提供的負載平衡服務(SLB),可選擇公網訪問或內網訪問。
- 關聯部署:選擇服務要綁定的後端對象,本例中使用 serverless-app-deployment。若不進行關聯部署,則不會建立相關的 Endpoints 對象,您可自己進行綁定,參見 services-without-selectors。
- 連接埠映射:添加服務連接埠和容器連接埠,容器連接埠需要與後端的 pod 中暴露的容器連接埠一致。
- 註解:為該服務添加一個註解(annotation),配置負載平衡的參數,例如設定
service.beta.kubernetes.io/alicloud-loadbalancer-bandwidth:20
表示將該服務的頻寬峰值設定為20Mbit/s,從而控制服務的流量。更多參數請參見負載平衡。 - 標籤:您可為該服務添加一個標籤,標識該服務。
- 單擊建立,serverless-service 服務出現在服務列表中。
- 您可查看服務的基本資料,在瀏覽器中訪問 serverless-service 的外部端點。
至此,您完成如何建立一個關聯到後端的 deployment 的服務,最後成功訪問 Nginx 的歡迎頁面。