天天看點

包年購買K8S叢集的省錢之道

前段時間我有幸拿到了一張5000元的阿裡雲代金券,在此一并感謝為我申請代金券的阿裡雲營運同學。我準備用這筆費用包年購買一個阿裡雲K8S叢集。但正常情況下5000元包年購買一台符合K8S叢集建立要求的伺服器都有一定困難,别說除了伺服器之外還要購買一堆網絡和存儲資源了,不過最後我還是成功的完成購買,下面就分享一下購買的過程供大家參考。

在建立阿裡雲K8S叢集時有兩種叢集模式,一種是托管叢集,一種是專有叢集。專有叢集需要至少三台額外的Master節點,托管叢集無需準備Master節點,是以我選擇托管叢集模式,在選擇托管叢集模式之後還有一個Pro版和标準版的選擇,Pro版主要用于生産環境,有明确的SLA承諾,而标準版主要用于開發測試環境,我這個環境就是用來進行測試的,是以選擇标準版。

在建立托管K8S叢集時需要用到的計算、網絡、存儲資源包括:

  • worker節點、需要至少兩台4C及以上配置的企業級規格ECS,典型的規格包括G、C、R系列等,不支援N、T系列等共享規格執行個體,ECS資源可以提前購買在建立叢集時選擇現有執行個體,也可以在建立叢集時直接購買。
  • 負載均衡、通常要建立兩個SLB負載均衡,阿裡雲的K8S叢集本身的API管控需要一台SLB,叢集的對外提供服務入口的Ingress元件需要一個SLB。其中用于叢集管控的SLB隻能在建立叢集時一并購買,不支援事後指定,用于Ingress的負載均衡可以在事後通過手工建立Ingrees來指定。
  • EIP、需要兩個EIP,分别指向上面提到的兩個SLB,負責API管控的SLB及其對應的EIP在建立叢集時自動購買和綁定,無需提前購買。
  • NAT網關、在阿裡雲的K8S叢集内部 ,服務請求的處理可以通過SLB進行轉發,而假如容器組(POD)要主動對外網發起通路則需要通過NAT網關進行SNAT轉發。NAT網關的另一個應用場景是容器鏡像的拉取,除了用NAT網關,假如Worker節點在購買時選擇了公網IP或綁定了EIP,容器鏡像的拉取還支援直接通過worker節點的公網出口進行處理,無需NAT網關。假如不是經常需要POD直接對外網發起請求,包年一個NAT網關執行個體就有些浪費了,可以選擇購買一個NAT網關的按量計費資源包,隻在需要的時候開啟NAT網關。
  • NAS存儲資源包、建議采用速型的NAS資源包,相對于通用型的NAS,極速型NAS能提供更及時的IO響應。
  • SCU存儲資源包、在像關系型資料庫這樣的應用場景,塊存儲比NAS更為合适一些,建議購買SCU存儲容量包,準備随時按需為叢集提供塊存儲資源。
  • SLS資源包、在K8S運作過程中會産生大量的日志資訊,其中就包括使用者通路叢集服務的日志資訊,以及叢集各類資源建立時留下的系統資訊,這些資訊都将存儲到阿裡雲的SLS日志服務中,可以購買SLS資源包進行抵扣。

在準備上述資源的過程中,可以充分利用阿裡雲的一些優惠活動,例如在雙十一期間新老客戶均可享受4折購買R5類型的2C、4C、8C規格執行個體、小規格的SLB執行個體包年5折(限一單)、極速型NAS資源包1折優惠等,利用這些優惠資源可以極大的降低K8S叢集的建構成本。

對于開發測試環境來說,還可以通過購買一台包年執行個體+一台按量付費執行個體來建立叢集,在叢集建立完畢後再移除按量計費執行個體的辦法來進一步降低叢集的日常運作開銷,一旦需要投入大量資源時可以随時添加按量付費或者搶占型的執行個體來臨時擴充叢集資源。

總之,在采取了上述政策之後,我利用5000塊的代金券成功的包年購買了一個K8S托管叢集,以下是建立過程中的步驟和關鍵選項:

一、包年購買一台ECS伺服器,為了進一步降低成本我選擇在雙十一期間在華北三地域建立一台R5類型的ECS執行個體,執行個體的規格為4C、32G、100GB雲盤、預設1Mbps公網帶寬(在購買完成後更改為按流量計費)。

二、 開通一台搶占型執行個體,規格和包年執行個體相同,建立叢集之後就釋放掉。

三、 進入阿裡雲K8S叢集管理控制台,建立叢集,選擇托管叢集——标準版,計費模式選擇包年包月,這樣一來用于API管控的SLB将會以包年包月的方式建立。

包年購買K8S叢集的省錢之道

四、Kubernetes版本和容器運作時,正常情況下選擇最新的Kubernetes版本即可,對于容器運作環境沒有特殊要求的客戶選擇預設的Containerd即可,安全沙箱是給對安全有更高要求的客戶準備的,可以提供更好的容器隔離性。假如采用了Containerd運作時,在主控端上需要使用crictl指令替代docker指令。

包年購買K8S叢集的省錢之道

五、專有網絡和網絡插件,專有網絡選擇目标地域下專有網絡即可,網絡插件的選擇要看對安全和容量密度的需求,預設的Flannel可以提供更高的容器密度,但缺少網絡政策等安全功能,在性能上也不如Terway,選擇Terway雖然可以使用網絡安全政策但單台ECS能夠提供的POD數量受到伺服器彈性網卡數量的限制,通常情況下單台伺服器能夠提供的POD數量要少于Flannel插件,對于一般的開發測試需求選擇Flannel即可。

包年購買K8S叢集的省錢之道

六、虛拟交換機的選擇、為了未來能夠使用該VPC下的所有可用區,建議在選擇交換機的過程中盡可能覆寫所有可用區。

七、節點IP數量、POD網絡CIDR、Service網絡CIDR,節點IP數量直接選擇最大的256即可,畢竟我們要搭建的是開發測試環境,POD網絡CIDR和Service網絡CIDR通常情況下保持預設即可,除非推薦的網絡位址存在沖突情況。

包年購買K8S叢集的省錢之道

八、SNAT配置和API Server通路,因為可以随時根據需要來開通NAT網關,此處選擇暫不配置SNAT,API Server 選擇最低規格的SLB執行個體并開啟EIP暴露API Server,這樣可以友善随時在外網通路API Server,在建立叢集的過程中将自動的開通一台簡約I型的包年包月内網SLB,并開通一個EIP綁定到該SLB上。

包年購買K8S叢集的省錢之道

九、RDS白名單、安全組、叢集删除保護,我的環境中不涉及RDS是以沒有選擇,安全組選擇預設的自動建立企業級安全組,建議勾選叢集删除保護。


包年購買K8S叢集的省錢之道

十、點選下一步,節點池配置,選擇現有節點,選擇之前建立的兩台ECS伺服器,在此處還可以根據需要設定伺服器的作業系統以及登入用的密鑰和密碼。

包年購買K8S叢集的省錢之道

十一、點選下一步,元件配置,首先是Ingress和伺服器發現的選項,這裡我選擇不安裝Ingress,可以在叢集建立完成後進行手工建立。服務發現預設勾選即可。

包年購買K8S叢集的省錢之道

十二、存儲插件、監控插件、報警配置選擇預設即可無需更改。

包年購買K8S叢集的省錢之道

十三、日志服務和控制螢幕元件日志,我的選擇是全部勾選,因為假如不在這裡選擇開通,在叢集建立之後手工開通是比較困難的。為了降低日志的存儲開銷,我們可以在叢集建立完畢之後進入SLS伺服器控制台,縮短一下日志的保留時間。

包年購買K8S叢集的省錢之道

十四、完成叢集配置,在完成上述選項之後,點選完成配置将看到一個配置确認頁面,确認所有的配置無誤後就可以建立叢集了。等叢集建立完成之後還需要完成一些後續收尾工作,包括釋放搶占型執行個體、Ingress建立、SLS日志保留時間的設定等。

十六、首先釋放臨時的ECS執行個體,進入叢集控制台,單擊進入剛建立的叢集控制台,在左側的菜單中找到叢集資訊——節點管理——節點配置頁面。在對應執行個體的右側點選更多——移除,在随後的彈出頁面中選擇排空該節點上的POD。這樣該節點将被從叢集中移除,并自動進入關機狀态,在容器叢集控制台看不到該節點後再進入ECS控制台,找到這台關機的ECS執行個體手工釋放即可。

包年購買K8S叢集的省錢之道

十五、購買SLB和EIP,包年購買一個内網SLB,因為這樣才能避免在包年購買SLB的同時包年購買公網帶寬。再開通一個按量付費的EIP指向該SLB。

十六、手工開通按量付費Ingress,進入k8s叢集的管理控制台,選擇剛建立的叢集,在左邊菜單欄中找到運維管理——元件管理。在右邊的元件清單中找到Nginx Ingress選擇安裝,這樣就開通一個按量付費的Ingress SLB,但這不是我們要的最終結果,我們隻是要借助這一過程獲得一個完整的Nginx Ingress建立Yaml檔案。

包年購買K8S叢集的省錢之道

十七、擷取Nginx Ingress的YAML檔案,在Nginx Ingress 建立完成後将可以擷取該元件的YAML檔案,将該檔案内容儲存到本地的ingress.yaml檔案中。

包年購買K8S叢集的省錢之道

十八、在本地部署kubectl 指令,添加kubeconfig檔案,kubecongfig檔案的内容在叢集的連接配接資訊處擷取。

包年購買K8S叢集的省錢之道

十九、使用kubectl delete -f ingress.yaml 删除臨時建立的Nginx Ingress。

二十、修改ingress.yaml ,在metadata部分添加有關SLB的注解資訊,令其使用之前建立的内網SLB。

添加内容的模版如下:

annotations:

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "lb-XXXXX "
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"
           

這兩句注解的意思是使用指定ID的負載均衡建立Ingress,并覆寫之前SLB上的已有配置。

負載均衡的ID可以去負載均衡控制台檢視。

包年購買K8S叢集的省錢之道

二十一、使用kubectl create -f ingress.yaml 重新建立Ingress并使用預先建立的包年包月SLB。

二十二、修改日志存儲周期,去到SLS控制台,找到新建立的日志Project,進入該Project,根據需要調整不同logstore的儲存時間,把省錢進行到底。

包年購買K8S叢集的省錢之道

使用這種方式來建立K8S叢集,日常的扣費主要來兩個EIP的執行個體費和流量費,兩個EIP執行個體費每年約為300元,流量費主要由API Server的結果傳回和worker節點的鏡像拉取請求(鏡像的傳輸流量屬于上行流量,免流量費)兩部分構成,這兩部分流量都不會太高,基本上可以忽略不計。

以上就是我利用5000塊代金券包年購買K8S叢集的過程分享,希望對大家有所幫助。

繼續閱讀