開發與維運

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

1.前言:

Aliyun Linux 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/

Leave a Reply

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