摘要:?聲明 本文主要介紹如何在阿里云上構(gòu)建一個(gè)K8S集群的實(shí)踐,只是作為參考,大家可以根據(jù)實(shí)際情況做出調(diào)整。 集群規(guī)劃 在實(shí)際案例中發(fā)現(xiàn),有不少同學(xué)使用了很多的小規(guī)格的ECS來(lái)構(gòu)建K8S集群,這樣其實(shí)即沒(méi)有達(dá)到省錢(qián)的目的,也沒(méi)有很好的發(fā)揮K8S集群的優(yōu)勢(shì)。
聲明
本文主要介紹如何在阿里云上構(gòu)建一個(gè)K8S集群的實(shí)踐,只是作為參考,大家可以根據(jù)實(shí)際情況做出調(diào)整。
集群規(guī)劃
在實(shí)際案例中發(fā)現(xiàn),有不少同學(xué)使用了很多的小規(guī)格的ECS來(lái)構(gòu)建K8S集群,這樣其實(shí)即沒(méi)有達(dá)到省錢(qián)的目的,也沒(méi)有很好的發(fā)揮K8S集群的優(yōu)勢(shì)。因?yàn)橥ㄟ^(guò)大量的小型ECS構(gòu)建集群有幾個(gè)弊端:
小規(guī)格Woker ECS的網(wǎng)絡(luò)資源受限
如果一個(gè)容器基本能占用掉一個(gè)小規(guī)格ECS,那么這個(gè)的機(jī)器的剩余資源就無(wú)法利用(構(gòu)建新的容器或者是恢復(fù)失敗的容器),在ECS數(shù)量多的情況,反而是一種浪費(fèi)。
那么如何選擇Worker ECS的規(guī)格呢?
確定整個(gè)集群的日常使用的總核數(shù)以及可用度的容忍度。例如總的核數(shù)有160核,同時(shí)容忍10%的錯(cuò)誤。那么最小選擇10臺(tái)ECS為16核的機(jī)器,并且高峰運(yùn)行的負(fù)荷不要超過(guò)16090%=144核。如果容忍度是20%,那么最小選擇5臺(tái)32核的機(jī)器,并且高峰運(yùn)行的負(fù)荷不要超過(guò)16080%=128核。這樣確保,就算有一臺(tái)機(jī)器整體crash都可以支持得住業(yè)務(wù)運(yùn)行。
但是上面這個(gè)計(jì)算只是理論值,因?yàn)橐?guī)格小的機(jī)器,很可能剩余不可利用的資源的比例就高。所以不是越小的機(jī)器越好。
選擇好CPU:Memory的比例。對(duì)于使用內(nèi)存比較多的應(yīng)用例如java類(lèi)應(yīng)用,建議考慮使用1:8的機(jī)型。
高規(guī)格ECS的一些好處:
高規(guī)格的好處是,網(wǎng)絡(luò)帶寬大,對(duì)于大帶寬類(lèi)的應(yīng)用,資源利用率也高。
在一臺(tái)機(jī)器內(nèi)容器建通信的比例增大,減少網(wǎng)絡(luò)的傳輸
拉取鏡像的效率更好。因?yàn)殓R像只需要拉取一次就可以被多個(gè)容器使用。而對(duì)于小規(guī)格的ECS拉取鏡像的此時(shí)就增多。在需要聯(lián)動(dòng)ECS做伸縮的場(chǎng)景,則需要花費(fèi)的時(shí)間更長(zhǎng),反而達(dá)不到立即響應(yīng)的目的
選用神龍服務(wù)器
阿里云已經(jīng)推出了裸金屬服務(wù)器:神龍,選用神龍服務(wù)比較典型的兩個(gè)場(chǎng)景:
如果在集群日常規(guī)模能夠到1000個(gè)核的情況下,建議全部選擇神龍服務(wù)器。(神龍服務(wù)器96核起)這樣可以通過(guò)10~11臺(tái)神龍服務(wù)器構(gòu)建一個(gè)集群。
需要快速擴(kuò)大比較多的容器的時(shí)候,特別是電商類(lèi)大促的時(shí)候,應(yīng)對(duì)流量尖峰,可以考慮使用神龍服務(wù)來(lái)作為新增的節(jié)點(diǎn),這樣增加一臺(tái)神龍就可以支持很多個(gè)容器運(yùn)行了。
神龍服務(wù)作為容器集群的構(gòu)建基礎(chǔ),還有以下好處:
超強(qiáng)網(wǎng)絡(luò): 配備RDMA技術(shù)。通過(guò)Terway容器網(wǎng)絡(luò),充分發(fā)揮硬件性能跨宿主機(jī)容器帶寬超過(guò)9Gbit/s
計(jì)算性能零抖動(dòng):自研芯片取代Hypervisor,無(wú)虛擬化開(kāi)銷(xiāo),無(wú)資源搶占
安全:物理級(jí)別加密,支持Intel SGX加密,可信計(jì)算環(huán)境,支持區(qū)塊鏈等應(yīng)用
構(gòu)建集群選項(xiàng)注意點(diǎn)
在構(gòu)建k8s集群是,有很多選項(xiàng)需要注意:
網(wǎng)絡(luò)選擇
如果需要連接外部的一有服務(wù),如 rds等,則需要考慮復(fù)用原有的VPC,而不是取創(chuàng)建一個(gè)新的VPC。因?yàn)閂PC間是隔離的。但是可以通過(guò)創(chuàng)建一個(gè)新的交換機(jī),把k8s的機(jī)器都放在這個(gè)交換機(jī),便于管理。
網(wǎng)絡(luò)插件的選擇:目前支持兩種插件,一種是flannel,直通VPC,性能最高。一種是Terway,提供k8s的網(wǎng)絡(luò)策略管理。
POD CIDR,整個(gè)集群的POD的網(wǎng)絡(luò)。這個(gè)不能設(shè)置太小。因?yàn)樵O(shè)置太小,能支持的節(jié)點(diǎn)數(shù)量就受限了。這個(gè)與高級(jí)選項(xiàng)中“每個(gè)節(jié)點(diǎn)POD的數(shù)量有關(guān)”。例如POD CIDR是/16的網(wǎng)段,那么就有256*256個(gè)地址,如果每個(gè)幾點(diǎn)POD數(shù)量是128,則最多可以支持512個(gè)節(jié)點(diǎn)。
磁盤(pán)的選擇
盡量選擇SSD盤(pán)
對(duì)于Worker節(jié)點(diǎn),盡量選擇“掛在數(shù)據(jù)盤(pán)”。因?yàn)檫@個(gè)盤(pán)是專(zhuān)門(mén)提供給/var/lib/docker,使用來(lái)存放本地鏡像的。避免后續(xù)如果鏡像太多撐爆根磁盤(pán)。在運(yùn)行一段時(shí)間后,本地會(huì)存在很多無(wú)用的鏡像。比較快捷的方式就是,先下線(xiàn)這臺(tái)機(jī)器,重新構(gòu)建這個(gè)磁盤(pán),然后再上線(xiàn)。
日常運(yùn)維設(shè)置
對(duì)于ECS的監(jiān)控,日常運(yùn)維一定設(shè)置CPU, Memory,磁盤(pán)的告警。再次說(shuō)明一下,盡量將/var/lib/docker放在獨(dú)立一個(gè)盤(pán)上
一定配置日志收集
是否需要立即構(gòu)建Worker節(jié)點(diǎn)
目前集群的創(chuàng)建方式使用的ECS是按照量計(jì)費(fèi)的模式。如果需要包年包月,則可以考慮先不創(chuàng)建Worker節(jié)點(diǎn),然后創(chuàng)建k8s集群完后,再單獨(dú)購(gòu)買(mǎi)ECS后添加進(jìn)集群里。
K8S穩(wěn)定性的考慮
參考?https://yq.aliyun.com/articles/599169?spm=a2c4e.11153959.0.0.4eebd55aSdySUm
Serverless Kubernetes
如果管理和維護(hù)Kuberntes集群太過(guò)于麻煩,為什么不試試我們的Serverless Kubernetes呢?
電子發(fā)燒友App















































評(píng)論