天天看點

容器服務ACK支援AliyunLinux2和場景優化

1.前言:

AliyunLinux 2是新一代阿裡雲原生Linux作業系統,為雲上應用程式提供安全、穩定、高性能的定制化運作環境,并針對雲基礎設施進行了深度優化,為您打造最佳的運作時體驗。并免費的獲得阿裡雲針對作業系統的長期支援。

容器服務ACK目前已經全面支援AliyunLinux2的節點建立和加入叢集,并結合AliyunLinux2的高核心特性提供了多場景的優化。

2.使用AliyunLinux2作業系統鏡像的優勢:

AliyunLinux2的作業系統是針對阿裡雲的飛天虛拟化平台開發的,針對阿裡雲的環境提供了很多優化和新特性,主要包括了:

  • 在阿裡雲上啟動最快的Linux發行版,
  • 針對ECS大規格虛機、裸金屬伺服器深度優化,特别是大規格執行個體的多任務的場景
  • 預設安裝阿裡雲常用軟體包,如Aliyun CLI,cloud-init等,減少雲資源的管理成本
  • 精簡系統,最小的安全攻擊面,最少的系統資源占用
  • 更完善的支援體系,在阿裡雲上提供多種管道的技術支援體系
  • 更及時的軟體安全漏洞(CVE)修複
  • 支援核心熱更新檔更新的能力,大大保障漏洞修複時的業務連續性

使用者應用執行個體本身在AliyunLinux2上運作也會有不錯的性能表現,其中包含了:

  • 針對ECS執行個體環境大幅優化啟動速度,在系統壓力來臨時快速的擴容啟動計算資源,啟動速度相對Centos 7提升29%
  • 針對ECS執行個體環境優化了多任務的場景,提升大規格執行個體多任務的性能,同樣規格下能有16%的性能提升
  • 更高效的系統調用,系統調用的性能提升11%
  • Linux網絡棧的優化,綜合網絡性能相對Centos 7提升7.8%
  • AliyunLinux2預設是編譯好BBR的擁塞控制算法的,在公網通路較多的場景中允許使用者修改擁塞控制算法為BBR,提升公網通路的帶寬穩定性
  • 針對TLS協定的加密優化
  • 支援新的BFQ的IO排程器,降低雲盤的延遲

3.容器服務ACK 結合AliyunLinux2的場景優化:

衆所周知,阿裡内部幾乎所有業務都是容器化的,有着多年的企業級容器場景作業系統優化的經驗,通過核心級的優化,讓容器任務混布的密度提升的同時不影響線上業務的響應。在AliyunLinux2的作業系統和Kernel中包含了這些優化。容器服務ACK針對這些優化特性,提供了多場景的優化,促進容器化業務跑的更快更平穩:

3.1 容器網絡優化

得益于AliyunLinux2的4.19的高核心版本,在AliyunLinux2的節點上,容器服務Terway網絡插件支援IPVlan的容器網絡模式,在小包的場景下相對傳統bridge和政策路由網絡性能提升40%。

AliyunLinux2預設是編譯了BBR的擁塞控制算法的,在公網通路較多的場景中允許使用者修改容器的擁塞控制算法為BBR,提升公網通路的帶寬穩定性,在容器的公網連接配接和跨公網的鏡像拉取上性能大幅提升。

3.2 安全容器支援和優化

阿裡雲與 Kata Container 和 Clear Linux 社群合作,在彈性裸金屬執行個體上,使用者可以無縫地部署整套 Kata    Container 的解決方案,并且還優化了 RunV 容器鏡像的啟動時間,使得 Kata Container 的整體解決方案可以運作良好。容器服務ACK在此之上,提供了和普通叢集體驗幾乎一緻的安全沙箱容器叢集,讓應用運作在一個輕量虛拟機沙箱環境中,适合于多使用者間的負載隔離,對不可信應用的隔離。 在提升安全性的同時,對性能影響也做到非常小。

3.3 節點AutoScaler優化

AliyunLinux2針對ECS執行個體環境大幅優化啟動速度,節點的啟動時間相對Centos 7的系統降低29%,結合容器服務ACK靈活高效的自動彈性伸縮,在應用壓力來臨時,容器服務ACK叢集會自動根據負載狀況建立和啟動ECS的節點加入叢集,并排程和啟動應用執行個體,AliyunLinux2的快速的擴容啟動的能力讓計算資源可以急事滿足流量峰值的需求。

3.4 CoreDNS優化

針對UDP協定的conntrack表的占用優化,在容器叢集中部署密度高了後經常遇到DNS的解析問題,其實大部分是因為DNS查詢的UDP協定對conntrack的占用太多不釋放導緻,而AliyunLinux2中的conntrack的優化可以讓同樣DNS查詢頻率的conntrack表占用減少一半,進而大大提高叢集中應用DNS查詢的成功率。

3.5 更細粒度的資源監控和控制能力

阿裡巴巴在多年容器混布的經驗中抽象出很多細粒度的資源的控制能力。在AliyunLinux2的核心中也有包含,提供了針對容器場景的PSI壓力模型、per-cgroup kswapd、memory priority等的細粒度可視化和控制能力,在AliyunLinux2的容器服務ACK叢集中我們可以通過CGroup Controller來利用這些能力,可以實作細粒度BufferIO Control/TCP/CPUSet/Mem/NUMA等細粒度資源的配置和動态更新,在逐漸提升資源使用率的同時也能保障應用間的互相幹擾降到最低。

3.6 AI和資料加速

AliyunLinux2對大規格機型和多任務的優化可以提升高性能計算任務的速度,對存儲的流式讀寫的優化也可以提高模型大檔案的讀寫性能,綜合起來大大加速AI和高性能計算任務的效率,例如在實際測試場景中:

  • 通過Alluxio利用64個線程加載OSS資料1152個檔案144G,在CentOS需要3m25s,AliyunLinux2隻需2m19.037s,速度是Centos上的1.6倍。
  • 運作ResNet50 Batch 128模型訓練,資料緩存到Alluxio中,在CentOS下V100僅僅為5212.00 images/s,在AliyunLinux2下V100可以達到8746.59 images/s,  速度是Centos上的1.7倍。

3.7 其他

  • 基于Linux 4.19的核心将阿裡巴巴的多年核心和容器化實踐融入其中
  • 降低Overlayfs的性能損耗,減少容器化對存儲性能的損失
  • 大量sysctl namespace化,在4.19的核心中大部分sysctl配置都支援在容器中單獨設定,比如tcp的逾時和重傳時間,不同應用有不同的逾時和重傳的需求,但是在Centos 7的核心中是修改不了的,在AlinyunLinux2中支援對其做Pod級别的配置。

4.如何使用AliyunLinux2作為叢集節點系統鏡像:

  1. 在阿裡雲容器服務ACK中建立叢集  https://cs.console.aliyun.com/#/k8s/cluster/createV2/managed?template=managed-default
  2. 在建立叢集的配置過程中,有個作業系統配置,其中選擇 "AliyunLinux2"的作業系統并一鍵建立叢集
  3. 等待叢集建立完成後,我們就可以看到叢集中的節點為"AliyunLinux2"的作業系統了

PS: 如果是需要對鏡像再做一些定制,可以基于AliyunLinux2的鏡像再建構自定義鏡像使用,容器服務提供了自定義容器服務節點鏡像的工具:

https://github.com/AliyunContainerService/ack-image-builder

5.總結:

AliyunLinux2的作業系統源自阿裡雲作業系統團隊的精心調校,包含了backport的最新的核心能力,以及阿裡巴巴多年的雲原生和容器化的經驗。容器服務ACK也結合這些特性做了豐富的場景優化,推薦大家使用。此外,容器服務也在結合SOCKMAP和TCP發送接收的零拷貝技術,讓ServiceMesh對性能的損失降到最小,提供更好的ServiceMesh能力。

參考:

《Aliyun Linux2産品官網》

https://www.alibabacloud.com/zh/products/alinux

《阿裡雲作業系統及Kernel團隊部落格》 

https://kernel.taobao.org/

《阿裡雲核心開源官網》

https://alibaba.github.io/cloud-kernel/zh/

《體驗 AliyunLinux2 不多花一分錢提升15%伺服器性能》 

https://yq.aliyun.com/articles/701433

《Kubernetes網絡的IPVlan方案》

https://kernel.taobao.org/2019/11/ipvlan-for-kubernete-net/

繼續閱讀