開發與維運

預付費購買ACK容器集群

上週的文章是《分享一個高彈性的架構》,介紹了通過阿里雲ACK、ECI來實現高彈性IT基礎架構,這一週我們來聚焦ACK集群的資源購買和創建問題。

阿里雲的計費模式分成兩種:預付費和後付費,顧名思義,預付費就是提前向阿里雲支付費用,阿里雲向客戶交付確定規格的服務產品,客戶可以立即取得服務發票的一種計費模式。而後付費則需要客戶提前將現金預存在阿里雲賬戶中,再根據需要隨時開通所需規格的服務產品,一段時間之後,客戶可以基於已消費的金額從阿里雲開具服務發票的一種計費模式。

大部分傳統行業客戶均採取預算制,因此在購買服務之前就要對要產生的消費額度進行估算和提前申請費用,在取得費用後通常需要馬上獲取對應金額的發票,更適合採取預付費的支付方式。

目前,阿里雲ACK服務在創建集群時直接購買的資源均採取後付費的計
費模式,這樣服務的開通和計費相對簡單,也更容易實現按需的彈性擴縮容,但這樣一來對於傳統行業客戶的購買和使用將造成一定的困擾。下面就讓我們聊聊如何以預付費的方式來購買ACK集群。

我們首先要面對的問題是創建哪種類型的ACK集群?
ACK託管Pro版目前只支持後付費模式購買,假如需要以預付費的方式構建集群,有兩個選擇:ACK託管標準版、ACK專有版,因為ACK託管標準版無SLA保障,推薦生產系統使用ACK專有版,ACK專有版需要客戶提前購買三臺ECS服務器作為Kubernetes集群的Master節點。

對於計算資源的購買,ACK集群在創建時默認購買按量計費的Worker節點,因此除了Master節點,我們還需要提前購買ECS服務器作為承載日常業務水位的Worker節點。這樣一來我們在創建時選擇提前購買的Master和Worker節點,就可以避免通過後付費模式購買ECS。

除了提前購買所有的ECS實例,我們還可以通過預留實例券來進行動態抵扣,預留實例券是阿里雲推出的一種動態抵扣計算資源消耗的抵扣券,可以自動抵扣一定規格內的計算資源消耗,預留實例券支持100%預付費購買,不僅ECS支持預留實例券,ECI彈性容器實例也支持通過預留實例券抵扣,但在創建ECI實例時需要對ECI使用的ECS規格進行指定以匹配指定規格的預留實例券。在ACK集群中我們可以在POD定義中通過annotations來指定創建ECI實例時使用的ECS規格。

下面舉一個例子:
假設我們預先購買了100個ecs.c6.large規格(2vCPU,4GB),為期一年的預留實例券,並預先支付了100%的費用。我們在創建POD的時候可以在模版annotations中通過k8s.aliyun.com/eci-use-specs : "ecs.c6.large" 來指定ECI創建ecs.c6.large規格的實例,從而準確的抵扣預留實例資源池中的資源。

雖然預留實例券支持抵扣ECI彈性容器實例,但由於預留實例券在購買時需要指定ECS實例的規格和數量,因此並不適用於應付業務負載週期性大範圍變化的應用場景。

上週介紹的高彈性架構雖然可以通過預留實例券進行購買和創建,但需要提前購買大量的預留實例節點,且在進行資源申請和抵扣時只能選擇已購買的ECS實例規格,而無法選擇像0.25vCPU、0.5G內存這樣的更細粒度的資源規格。假如以後ECI支持容量遞減資源包的方式進行抵扣就更適合通過預付費來實現這種高彈性的架構了。

在ACK的創建過程中,除了計算資源外,還需要EIP、SLB、NAT網關等網絡資源。EIP主要用於集群的API Server 和NAT網關,雖然ACK集群創建時購買的的EIP是後付費模式,但可以隨時在EIP控制檯將其轉換為預付費模式。NAT網關可以不在創建集群時自動創建,而是提前購買或在集群創建完成後購買預付費的NAT網關。ACK集群自動創建的SLB實例有兩個,一個是用於集群API Server的內網SLB,一個是用於Ingress的外網/內網SLB,可以在集群創建完成後在SLB控制檯將這兩個SLB修改為包年包月的預付費方式,特別需要注意的是用於API Server的內網SLB千萬不能刪除,刪除後無法恢復,只能重新創建集群,用於Ingress的SLB可以通過annotations進行更換,具體的步驟可以參考阿里雲線上文檔。

Leave a Reply

Your email address will not be published. Required fields are marked *