ACK目前已經全面支持Alibaba Cloud Linux 2的節點創建,并結合Alibaba Cloud Linux 2的高內核特性提供了多場景的優化。本文介紹ACK中使用Alibaba Cloud Linux 2操作系統的優勢,以及ACK基于Alibaba Cloud Linux 2提供的多場景優化。
Alibaba Cloud Linux 2已于2024年03月31日00:00:00完全停止維護(EOL)。推薦您在創建集群或節點池時,選擇操作系統為Alibaba Cloud Linux 3或ContainerOS。關于Alibaba Cloud Linux 2 EOL的更多信息,請參見【產品變更】關于Alibaba Cloud Linux 2、CentOS 7停止維護的公告。
背景信息
Alibaba Cloud Linux 2是新一代阿里云原生Linux操作系統,為云上應用程序提供安全、穩定、高性能的定制化運行環境,并針對云基礎設施進行了深度優化,為您打造更好的運行時體驗。您可以免費使用Alibaba Cloud Linux 2公共鏡像,并免費獲得阿里云針對該操作系統的長期支持。
使用Alibaba Cloud Linux 2操作系統鏡像的優勢
Alibaba Cloud Linux 2的操作系統是針對阿里云飛天虛擬化平臺開發的,針對阿里云的環境提供了很多優化和新特性,主要包括:
是阿里云上啟動最快的Linux發行版。
針對ECS大規格虛擬機、裸金屬服務器深度優化,特別是大規格實例的多任務的場景。
默認安裝阿里云常用軟件包,如阿里云CLI、cloud-init等,減少云資源的管理成本。
精簡系統,最小的安全攻擊面,最少的系統資源占用。
更完善的支持體系,在阿里云上提供多種渠道的技術支持體系。
更及時的軟件安全漏洞(CVE)修復。
支持內核熱補丁升級的能力,大大保障漏洞修復時的業務連續性。
應用實例在Alibaba Cloud Linux 2上運行的性能優勢包括:
針對ECS實例環境大幅優化啟動速度,在系統壓力來臨時快速的擴容啟動計算資源,啟動速度相對CentOS 7提升29%。
針對ECS實例環境優化了多任務的場景,提升大規格實例多任務的性能,同樣規格下能有16%的性能提升。
更高效的系統調用,系統調用的性能提升11%。
Linux網絡棧的優化,綜合網絡性能相對CentOS 7提升7.8%。
Alibaba Cloud Linux 2默認是編譯好BBR的擁塞控制算法的,在公網訪問較多的場景中允許您修改擁塞控制算法為BBR(Bottleneck Bandwidth and RTT),提升公網訪問的帶寬穩定性。
針對TLS協議,進行了加密優化。
支持新的Budget Fair Queueing的IO調度器,降低云盤的延遲。
ACK結合Alibaba Cloud Linux 2的場景優化
阿里云容器化業務通過內核級的優化,讓容器任務混布的密度提升的同時不影響在線業務的響應。Alibaba Cloud Linux 2的操作系統和Kernel中包含了這些優化。ACK針對這些優化特性,提供了多場景的優化,促進容器化業務更快更平穩地運行。
IPVS優化
場景一:大規格機器(CPU數大于64)且有大量IPVS虛擬IP的場景。
解決問題:IPVS的統計定時器(estimation timer)會定期計算各個連接當前的速率,在連接數多的情況下,該操作會長時間占用CPU,導致網絡收包不及時,引起Ping命令高達200ms的波動。
優化方案:將IPVS的統計定時器放到節點中執行;同時添加sysctl命令關閉IPVS的統計。
效果:不再有由于統計定時器引起的波動。
場景二:容器滾動升級的場景。
解決問題:在容器發生了滾動升級的時候,如果五元組沒有發生變化,新的TCP SYN包命中了舊的IPVS五元組連接記錄,并且需要被調度到新的目的地址的時候,IPVS默認會丟掉SYN包,導致SYN包重傳,從而引發1秒的延時問題。
優化方案:在新Conntrack項已經存在的情況下,通過釋放Conntrack中的TIME_WAIT狀態的連接,將其調度并替換為新連接。
效果:可以幾乎沒有時延地切換到新的真實節點(real server)。
CoreDNS優化
場景一:容器內大量DNS查詢導致Conntrack表滿的場景。
解決問題:容器內的應用查詢固定的地址(addr)或端口(port)的DNS會讓相應Conntrack entry變成stream mode狀態。由于DNS請求的類型是UDP無狀態、問答式、時間短,因此導致Conntrack entry維護了很多無用的UDP Conntrack entries,不能及時清理,進而可能導致Conntrack表膨脹引起NAT的性能下降。
優化方案:
只有UDP連接持續2秒以上才會被設置成Stream mode狀態,從而避免了Conntrack entry的快速膨脹。
縮短默認UDP Conntrack過期時間,從180s縮短到120s,讓其更快過期,減少對Conntrack entry的影響。
效果:相同測試場景下UDP的Conntrack表項下降到原來的一半。
容器網絡性能優化
在Alibaba Cloud Linux 2的節點上,容器服務Terway網絡插件支持IPVlan的容器網絡模式,在小包的場景下相對傳統Bridge和策略路由網絡性能提升40%。Alibaba Cloud Linux 2默認編譯了BBR的擁塞控制算法,在公網訪問較多的場景中允許您修改容器的擁塞控制算法為BBR,提升公網訪問的帶寬穩定性,在容器的公網連接和跨公網的鏡像拉取上性能大幅提升。
安全容器支持和優化
阿里云與Kata Containers和Clear Linux社區合作。在彈性裸金屬實例上,您可以無縫地部署整套Kata Containers的解決方案。ACK還優化了安全沙箱(RunV)鏡像的啟動時間,使得Kata Containers的整體解決方案可以正常運行。ACK在此之上,提供了和普通集群體驗幾乎一致的安全沙箱容器集群,讓應用運行在一個輕量虛擬機沙箱環境中,適合于多用戶間的負載隔離,對不可信應用的隔離,在提升安全性的同時,對性能影響也做到非常小。
AutoScaler優化
Alibaba Cloud Linux 2針對ECS實例環境優化啟動速度,節點的啟動時間相對Centos 7的系統降低60%,結合容器服務ACK靈活高效的自動彈性伸縮,在應用壓力來臨時,容器服務ACK集群會自動根據負載狀況創建和啟動ECS的節點加入集群,并調度和啟動應用實例,Alibaba Cloud Linux 2的快速的擴容啟動的能力讓計算資源可以及時滿足流量峰值的需求。
資源監控和控制能力優化
Alibaba Cloud Linux 2的內核提供了針對容器場景的PSI壓力模型、per-cgroup kswapd、Memory Priority等的細粒度可視化和控制能力。在Alibaba Cloud Linux 2的ACK集群中我們可以通過CGroup Controller來利用這些能力,可以實現細粒度BufferIO Control、TCP、CPUSet、Mem、NUMA等細粒度資源的配置和動態更新,在逐步提升資源利用率的同時也能保障應用間的互相干擾降到最低。
AI和數據加速優化
Alibaba Cloud Linux 2對大規格機型和多任務的優化可以提升高性能計算任務的速度,對存儲的流式讀寫的優化也可以提高模型大文件的讀寫性能,綜合起來大大加速AI和高性能計算任務的效率。實際測試場景如下:
通過Alluxio利用64個線程加載OSS數據1152個文件144 GB,在CentOS需要3分25秒,Alibaba Cloud Linux 2只需2分19.037秒,速度是CentOS上的1.6倍。
運行ResNet50 Batch 128模型訓練,數據緩存到Alluxio中,在CentOS下V100僅僅為5212.00 images/s。在Alibaba Cloud Linux 2下V100可以達到8746.59 images/s,速度是CentOS上的1.7倍。
容器資源增強展示優化
由于當前多容器共宿主機的形態,導致容器中直觀看到的資源都是宿主機資源,對很多應用非常不友好。Alibaba Cloud Linux 2對內核的CGroup資源展示進行了優化,可以在容器內部正確顯示容器所占用的資源,例如TOP命令、CPUInfo和MemInfo接口的顯示信息,大大方便了您的觀測需求。
其他優化
使用Linux 4.19的內核,ACK將阿里巴巴內核和容器化實踐融入其中。
降低Overlayfs的性能損耗,減少容器化對存儲性能的損失。
大量Sysctl Namespace化,在4.19的內核中大部分Sysctl配置都支持在容器中單獨設置,例如TCP的超時和重傳時間,不同應用有不同的超時和重傳的需求,但是在CentOS 7的內核中是無法修改的,在Alibaba Cloud Linux 2中支持對其做Pod級別的配置。
使用Alibaba Cloud Linux 2作為集群節點系統鏡像
您可以在創建集群的配置過程中,將操作系統選擇為Alibaba Cloud Linux 2.1903來使用Alibaba Cloud Linux 2作為集群節點系統鏡像。具體步驟,請參見通過OpenAPI創建Kubernetes托管版集群。
如果您選用Alibaba Cloud Linux 2,在創建集群以及后期擴容節點、添加節點、自動伸縮節點時,ACK會自動檢測Alibaba Cloud Linux 2的安全補丁更新并自動安裝補丁。