創(chuàng)建服務(wù)
本文檔為您介紹如何在ACK Serverless集群中創(chuàng)建服務(wù)。
前提條件
已創(chuàng)建ACK Serverless集群。具體操作,請(qǐng)參見(jiàn)創(chuàng)建ACK Serverless集群。
背景信息
Kubernetes Service定義了這樣一種抽象:一個(gè)Pod的邏輯分組,一種可以訪問(wèn)它們的策略,通常稱為微服務(wù)。這一組Pod能夠被Service訪問(wèn)到,通常是通過(guò)Label Selector來(lái)實(shí)現(xiàn)。
在Kubernetes中,Pod雖然擁有獨(dú)立的IP,但Pod會(huì)快速地創(chuàng)建和刪除,因此通過(guò)Pod直接對(duì)外界提供服務(wù)不符合高可用的設(shè)計(jì)準(zhǔn)則。通過(guò)Service,Service能夠解耦frontend(前端)和backend(后端)的關(guān)聯(lián),frontend不用關(guān)心backend的具體實(shí)現(xiàn),從而實(shí)現(xiàn)松耦合的微服務(wù)設(shè)計(jì)。
更多詳細(xì)的原理,請(qǐng)參見(jiàn)Kubernetes service。
步驟一:創(chuàng)建Deployment
使用鏡像創(chuàng)建一個(gè)Deployment,本例中創(chuàng)建的Deployment名稱為serverless-app-deployment。具體操作,請(qǐng)參見(jiàn)使用鏡像創(chuàng)建應(yīng)用。
步驟二:創(chuàng)建服務(wù)
登錄容器服務(wù)管理控制臺(tái),在左側(cè)導(dǎo)航欄選擇集群。
在集群列表頁(yè)面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇 。
在服務(wù)頁(yè)面,單擊創(chuàng)建。
在彈出的創(chuàng)建服務(wù)對(duì)話框中,配置相關(guān)參數(shù),然后單擊創(chuàng)建。
參數(shù)
說(shuō)明
服務(wù)名稱
輸入服務(wù)的名稱,本文配置為nginx-svc。
服務(wù)類型
選擇服務(wù)類型,即服務(wù)訪問(wèn)的方式。
虛擬集群IP:即ClusterIP,指通過(guò)集群的內(nèi)部IP暴露服務(wù),選擇該值,服務(wù)只能夠在集群內(nèi)部可以訪問(wèn),這也是默認(rèn)的ServiceType。
說(shuō)明您的服務(wù)類型為虛擬集群IP時(shí),才能設(shè)置實(shí)例間服務(wù)發(fā)現(xiàn)(Headless Service)。
負(fù)載均衡:即LoadBalancer,指阿里云提供的負(fù)載均衡服務(wù)(SLB),可選擇公網(wǎng)訪問(wèn)或私網(wǎng)訪問(wèn)。阿里云負(fù)載均衡服務(wù)可以路由到NodePort服務(wù)和ClusterIP服務(wù)。
說(shuō)明負(fù)載均衡類型支持新建SLB和使用已有SLB,且多個(gè)Kubernetes Service可以復(fù)用同一個(gè)SLB,但是存在以下限制:
使用已有的負(fù)載均衡實(shí)例會(huì)強(qiáng)制覆蓋已有監(jiān)聽(tīng)。
Kubernetes通過(guò)Service創(chuàng)建的SLB不能復(fù)用(會(huì)導(dǎo)致SLB被意外刪除)。只能復(fù)用您手動(dòng)在控制臺(tái)(或調(diào)用OpenAPI)創(chuàng)建的SLB。
復(fù)用同一個(gè)SLB的多個(gè)Service不能有相同的前端監(jiān)聽(tīng)端口,否則會(huì)造成端口沖突。
復(fù)用SLB時(shí),監(jiān)聽(tīng)的名字以及虛擬服務(wù)器組的名字被Kubernetes作為唯一標(biāo)識(shí)符。請(qǐng)勿修改監(jiān)聽(tīng)和虛擬服務(wù)器組的名字。
不支持跨集群復(fù)用SLB。
服務(wù)關(guān)聯(lián)
選擇服務(wù)要綁定的后端對(duì)象,本例為步驟一創(chuàng)建的serverless-app-deployment。若不進(jìn)行關(guān)聯(lián)部署,則不會(huì)創(chuàng)建相關(guān)的Endpoints對(duì)象,您可自己進(jìn)行綁定,詳情請(qǐng)參見(jiàn)services-without-selectors。
外部流量策略
可選值為Local或Cluster。
說(shuō)明當(dāng)服務(wù)類型為負(fù)載均衡時(shí),支持設(shè)置外部流量策略。
端口映射
添加服務(wù)端口和容器端口,容器端口需要與后端的Pod中暴露的容器端口一致。
注解
為該服務(wù)添加一個(gè)注解(Annotation),配置負(fù)載均衡的參數(shù),例如設(shè)置
service.beta.kubernetes.io/alicloud-loadbalancer-bandwidth:20
表示將該服務(wù)的帶寬峰值設(shè)置為20 Mbit/s,從而控制服務(wù)的流量。更多信息,請(qǐng)參見(jiàn)通過(guò)Annotation配置負(fù)載均衡。標(biāo)簽
為該服務(wù)添加一個(gè)標(biāo)簽,標(biāo)識(shí)該服務(wù)。
創(chuàng)建完成后,您可以在服務(wù)頁(yè)面的操作列下,對(duì)服務(wù)進(jìn)行查看、更新或刪除操作。