配置Service負(fù)載均衡的注意事項(xiàng)及CCM資源更新策略
當(dāng)Service的類型設(shè)置為負(fù)載均衡,即Type=LoadBalancer
時(shí),容器服務(wù)ACK的CCM(Cloud Controller Manager)組件會(huì)為該Service創(chuàng)建或配置一個(gè)負(fù)載均衡實(shí)例。該實(shí)例類型包含:傳統(tǒng)型負(fù)載均衡CLB(Classic Load Balancer)和網(wǎng)絡(luò)型負(fù)載均衡NLB(Network Load Balancer),配置包括實(shí)例、監(jiān)聽、后端服務(wù)器組等資源。本文介紹配置Service負(fù)載均衡的注意事項(xiàng)以及CCM的資源更新策略。
注意事項(xiàng)
哪些負(fù)載均衡可以被復(fù)用?
僅支持復(fù)用通過負(fù)載均衡控制臺(tái)創(chuàng)建的實(shí)例,不支持復(fù)用cloud-controller-manager自動(dòng)創(chuàng)建的負(fù)載均衡實(shí)例。
如果您需要在ACK集群中復(fù)用私網(wǎng)類型的負(fù)載均衡實(shí)例,則該實(shí)例需要和ACK集群處于同一VPC下。跨VPC復(fù)用僅適用于NLB實(shí)例。
復(fù)用負(fù)載均衡實(shí)例的地址類型必須與服務(wù)的訪問類型一致。當(dāng)服務(wù)為公網(wǎng)訪問(即
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "internet"
)時(shí),所用負(fù)載均衡的地址類型必須為公網(wǎng);當(dāng)服務(wù)為內(nèi)部訪問(即service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
)時(shí),所用負(fù)載均衡的地址類型必須為私網(wǎng)。多個(gè)服務(wù)不能同時(shí)使用一個(gè)負(fù)載均衡的同一個(gè)監(jiān)聽端口。
跨集群復(fù)用已有負(fù)載均衡實(shí)例時(shí),需要確保兩個(gè)集群的命名空間和Service組合名稱不一致。
CCM管理負(fù)載均衡時(shí)注意事項(xiàng)
CCM只為
Type=LoadBalancer
類型的Service配置負(fù)載均衡,對(duì)于非LoadBalancer類型的Service則不會(huì)為其配置負(fù)載均衡。CCM使用聲明式API,會(huì)在一定條件下自動(dòng)根據(jù)Service的配置刷新負(fù)載均衡配置。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners:
設(shè)置為"true"
時(shí),您自行在負(fù)載均衡控制臺(tái)上修改的配置均存在被覆蓋的風(fēng)險(xiǎn)。
當(dāng)Type=LoadBalancer
的Service變更為Type!=LoadBalancer
時(shí),CCM會(huì)刪除為該負(fù)載均衡添加的配置,從而造成無法通過該負(fù)載均衡訪問Service。
請(qǐng)勿在負(fù)載均衡控制臺(tái)上手動(dòng)修改ACK創(chuàng)建并維護(hù)的負(fù)載均衡的任何配置,否則有配置丟失的風(fēng)險(xiǎn),造成Service不可訪問。
CCM單集群管理大規(guī)模負(fù)載均衡時(shí)注意事項(xiàng)
CCM對(duì)Service事件的處理能力存在一定限制。當(dāng)集群規(guī)模較大時(shí)(如節(jié)點(diǎn)數(shù)量多、LoadBalancer類型的Service多等),在大量Service創(chuàng)建或刪除、大量Service Endpoint同時(shí)變更、存在大量LoadBalancer類型Service時(shí)節(jié)點(diǎn)加入或刪除等情況下,CCM在負(fù)載均衡的創(chuàng)建、刪除,以及服務(wù)器組的端點(diǎn)變更等操作中,可能會(huì)出現(xiàn)一定的延遲。
當(dāng)您因業(yè)務(wù)需要而進(jìn)行大批量的變更操作時(shí),請(qǐng)?zhí)崆白龊萌萘康脑u(píng)估和壓測(cè),避免因CCM的處理延遲而導(dǎo)致業(yè)務(wù)受損的情況發(fā)生。
如果需要為Service更換負(fù)載均衡實(shí)例,該如何操作?
已創(chuàng)建LoadBalancer類型的Service不支持重新指定負(fù)載均衡實(shí)例。如果您需要更換負(fù)載均衡實(shí)例,請(qǐng)刪除并重新創(chuàng)建Service。
配額限制
VPC
集群中一個(gè)節(jié)點(diǎn)對(duì)應(yīng)一條路由表項(xiàng),VPC默認(rèn)情況下僅支持200條路由表項(xiàng),如果集群節(jié)點(diǎn)數(shù)目多于200個(gè),請(qǐng)到配額平臺(tái)提交申請(qǐng)。
更多VPC使用限制,請(qǐng)參見限制與配額。
查詢VPC配額,請(qǐng)參見專有網(wǎng)絡(luò)VPC配額管理。
負(fù)載均衡
CCM會(huì)為
Type=LoadBalancer
類型的Service創(chuàng)建負(fù)載均衡。默認(rèn)情況下一個(gè)用戶可以保留60個(gè)實(shí)例。如果需要?jiǎng)?chuàng)建的數(shù)量大于60,請(qǐng)到配額平臺(tái)提交申請(qǐng)。CCM會(huì)根據(jù)Service的配置將ECS掛載到負(fù)載均衡后端服務(wù)器組中。
默認(rèn)情況下一個(gè)ECS實(shí)例可掛載的后端服務(wù)器組的數(shù)量為50個(gè),如果一臺(tái)ECS需要掛載到更多的后端服務(wù)器組中,請(qǐng)到配額平臺(tái)提交申請(qǐng)。
默認(rèn)情況下一個(gè)實(shí)例可以掛載200個(gè)后端服務(wù)器,如果需要掛載更多的后端服務(wù)器,請(qǐng)到配額平臺(tái)提交申請(qǐng)。
CCM會(huì)根據(jù)Service中定義的端口創(chuàng)建監(jiān)聽。默認(rèn)情況下一個(gè)實(shí)例可以添加50個(gè)監(jiān)聽,如需添加更多監(jiān)聽,請(qǐng)到配額平臺(tái)提交申請(qǐng)。
更多負(fù)載均衡使用限制,請(qǐng)參見CLB使用限制和NLB使用限制。
負(fù)載均衡配額查詢請(qǐng)參見負(fù)載均衡配額管理。
負(fù)載均衡更新策略
ACK支持為Service指定一個(gè)已有的負(fù)載均衡實(shí)例,或者讓CCM自動(dòng)創(chuàng)建新的負(fù)載均衡實(shí)例。兩種方式在負(fù)載均衡的資源更新策略方面存在一些差異,如下表所示。
資源對(duì)象 | 指定已有負(fù)載均衡 | CCM管理負(fù)載均衡 |
負(fù)載均衡 | 設(shè)置annotation:
|
|
監(jiān)聽 | 設(shè)置annotation:
| CCM會(huì)根據(jù)Service的配置,自動(dòng)創(chuàng)建和配置監(jiān)聽策略。 |
后端服務(wù)器組 | 當(dāng)Service對(duì)應(yīng)的后端Endpoint或者集群節(jié)點(diǎn)發(fā)生變化時(shí),CCM會(huì)自動(dòng)更新負(fù)載均衡的后端虛擬服務(wù)器組。
|
為Service開啟刪除保護(hù)
您可以為涉及關(guān)鍵業(yè)務(wù)、敏感數(shù)據(jù)的Service開啟刪除保護(hù)功能,以避免誤刪除帶來的維護(hù)成本。啟用后,僅當(dāng)您手動(dòng)關(guān)閉刪除保護(hù)后,對(duì)應(yīng)的資源才可以被刪除。關(guān)于為Service開啟刪除保護(hù)操作步驟詳情,請(qǐng)參見為Service開啟刪除保護(hù)。