回顾 | Kubernetes SIG-Cloud-Provider-Alibaba 首次网研会(含 PPT 下载)
作者 | 湯志敏、謝瑤瑤
會議完整視頻回顧:https://www.bilibili.com/video/av88668762
2 月 12 日,阿里云和 CNCF 聯合舉辦了線上研討會,首次完整介紹了阿里云對 Kubernetes 社區的布局,包括了 10 個類別,20 多個開源項目,提供了完整的 Kubernetes 生命周期管理。本文匯集了此次會議完整視頻回顧及資料下載,并整理了會議上未能及時回答的問題,希望能夠對大家有所幫助~
關注“阿里巴巴云原生”公眾號,后臺回復?“會議”?即可下載 PPT。
什么是 SIG Cloud Provider
隨著時間的發展,越來越多的企業在生產環境使用 Kubernetes。Kubernetes 被廣為接受,離不開其良好的設計和繁榮的社區。目前圍繞著 Kubernetes 已經有 20 個左右的興趣小組(SIG),SIG Cloud Provider 則是 Kubernetes 的重要興趣小組之一,致力于推動所有云廠商以標準的能力提供 Kubernetes 服務。
SIG-Cloud-Provider-Alibaba 是 SIG Cloud Provider 在國內唯一的子項目。
Cloud Provider SIG 是 Kubernetes 的云廠商興趣小組,致力于讓 Kubernetes 的生態系統往廠商中立的方向演進,他會負責協調不同廠商盡可能以統一的標準來滿足開發者的需求。目前加入 Cloud Provider SIG 包括了 7 家云廠商,包括 AWS、GCP、阿里云、IBMCloud 等。
為什么阿里云要加入 SIG Cloud Provider
1.和全球云廠商共同推動多云的標準,將阿里云的優秀實踐反哺社區
在全面上云的時代,云已經重塑了企業IT架構。云原生計算就是一組最佳實踐和方法論,如何在公共云、專有云、多云環境中,構建可伸縮、健壯、松耦合的應用,可以更快速的創新和低成本的試錯。
阿里云作為國際有影響力的云廠商,也希望能夠推動Kubernetes的進一步標準化,并進一步和橫向云廠商如AWS、Google、Azure進行技術協同,優化云和Kubernetes連接,并統一不同組件的模塊化和標準化協議。
2.對阿里云的 Kubernetes 開發者帶來透明可控、共建協同、平滑演進的能力
對于 Kubernetes 的開發者和用戶,我們希望基于阿里云打造 Kubernetes 的最佳運行環境,并將圍繞在?Kubernetes 的阿里云插件開源出來。而阿里云容器服務 ACK 也會盡量復用這些組件。
- 透明可控:對于研究性質的開發者,可以基于這些插件自行搭建 Kubernetes 集群;對于容器服務 ACK 的用戶,也可以更加透明的了解相關實現;
- 共建協同:如果對阿里云上使用 Kubernetes 的計算、網絡、存儲等領域有需求的開發者,可以提 Issue 或參與到開源組件開發中一起貢獻,并參與 RoadMap 的制定;
- 平滑演進:阿里云 Kubernetes 開源插件提供了 Day 1 的部署能力,但是對企業的運維、升級、穩定性掌控等提出了更高的要求。如果需要 Day 2 的持續升級、高可用保障、糾錯推薦等專家服務,可以平滑演進到容器服務 ACK。
SIG Cloud Provider Alibaba的運作機制
- Slack
- 雙月度會議
- 會議內容紀要:
Google Docs、
YouTube - 會議語言:中文、英文
阿里云 Kubernetes 產品家族簡介
阿里云 Kubernetes 開源套件 全家福
Kubernetes 作為云原生時代的應用操作系統,已經成為事實上的標準。阿里云在 Kubernetes 實踐的過程中開源了眾多的項目,如位于底層的計算、存儲、網絡、安全等相關的 5 個大的類別和上層領域相關的 AI、應用管理、遷移、Serveless 等 5 個大的類別,為用戶應用提供全棧式生命周期管理。
SIG-Cloud-Provider-Alibaba 為 K8s 在阿里云上的云原生最佳實踐提供一個溝通的橋梁,通過興趣小組的方式讓所有參與的個人、組織理解 CloudProvider 的原理并運用到生產實踐中,實現其業務價值。
詳見下文。
CloudController
- Cloud-provider
- Cluster-api
網絡
- Terway(CNI)
- Flannel(CNI)
- ingress
- External-dns
存儲
- CSI
- FlexVolume
- auto-provision
彈性
- Cron HPA
- cluster-autoscaler
安全
- KMS provider
- Kube2ram
- RAM Authenticator
- SGX device plugin
遷移
- Derrick
- Velero
- Image Builer
AI
- Arena
- GPU share
ServiceBroker
- ServiceBroker
Serverless
- Virtual-kubelet
應用管理
- Kube-eventer
- metrics-adapter
- log-pilot
- openKruise
- OAM
部分開源組件簡介
CloudController
CloudController 指 K8s 的 cloud-controller-manager 組件(簡稱 CCM), 提供 Kubernetes 與各個云廠商基礎服務的對接能力(包含網絡負載均衡,VPC 路由,ECS,DNS 等)。主要由 NodeController、ServiceController、RouteController、PVLController 四大控制器實現。
**NodeController?**實現了計算節點的管理,例如 ECS 節點生命周期管理,給節點打上可用區、Region、hostname 等標識,為編排系統在計算池上調度工作負載提供全方位的信息。同時定期輪詢 ECS 的 IP 地址及檢測 ECS 資源狀態(是否被釋放)等,動態更新節點信息,確保編排系統及時響應計算節點事件。
**ServiceController?**實現了應用負載均衡管理,通過監視 Kubernetes Service 對象的變化,自動的為應用配置并管理云上負載均衡服務(SLB 配置,監聽配置,虛擬服務器組配置),根據應用副本變化動態的調整負載均衡的后端服務器組,無需人工干預。在此基礎上,我們定義了一組豐富的 Annotation,用以自定義應用負載均衡的配置,同時我們同社區積極合作,共同推進配置的標準化,同時在 K8s 原因的服務發現模型上擴展了彈性網卡直通模式,減少了服務發現的網絡層級,整體提升了 10% 的應用網絡性能。
高性能網絡組件 Terway
Terway 實現了 Kubernetes CNI 規范,專為阿里云環境優化,并支持豐富的企業特性,支持 VPC 路由模式,ENI 模式、ENI 多 IP 等多種模式等,性能優秀,ENI 模式相比原生 VPC 提升 10% 左右。
Terway 和阿里云底層 IAAS 網絡深度整合,讓 Pod 作為云網絡一等公民無縫使用 CEN、SLB 等網絡產品,使用彈性網卡讓網絡性能 0 損失,使容器化的過程沒有體驗和性能的降級。同時支持 Kubernetes 網絡策略,Qos 流控等高級功能。
高性能容器存儲 CSI
阿里云 CSI 插件實現了在 Kubernetes 中對容器存儲卷的生命周期管理,支持動態創建、掛載、使用云數據卷。 當前的 CSI 實現基于 K8S 1.14 以上的版本;支持的阿里云存儲:云盤、NAS、CPFS、OSS、LVM 等。
高性能日志采集 LogPilot
Log-Pilot?是一個高效的智能容器日志采集工具,其不僅能夠便捷地采集容器的標準輸出日志,同時還能夠動態地發現采集容器內部的日志文件;其完全采用聲明式的配置方式,能夠自動地感知集群中容器的狀態來動態地配置容器日志采集,同時其還具備很多高級特性,諸如日志的自動?CheckPoint?及句柄保持機制、支持自動日志數據打標以及自定義 Tag 等機制,可靈活地將日志數據采集到多種不同的日志存儲后端,比如 ElasticSearch、Kafka、Logstash、Redis,Graylog 等。
機器學習輕量級解決方案 Arena
Arena 是基于 Kubernetes 的機器學習輕量級解決方案,支持數據準備,模型開發,模型訓練,模型預測的完整生命周期,提升數據科學家工作效率。方便數據科學家和算法工程師快速開始利用阿里云的資源(包括 ECS 云服務器、GPU 云服務器、分布式存儲 NAS、CPFS、 對象存儲 OSS、Elastic MapReduce、負載均衡等服務)執行數據準備、模型開發、模型訓練、評估和預測等任務。并能夠方便地將深度學習能力轉化為服務 API,加速與業務應用的集成。在提升數據科學家效率的同時,通過 GPU 資源的可視化管理和設備的共享調度提升集群 GPU 資源的利用率。
歡迎大家參加 SIG Cloud Provider
本次線上研討會首次介紹了阿里云在 Kubernetes 的社區布局。受限于時間和篇幅,并不能介紹完所有開源組件的詳細信息,而希望可以授之以漁,讓對 Kubernetes 感興趣的開發者找到對應的開源項目。我們歡迎更多的開發者一起來參與共建,無論是提 PR 或 Issue,還是對 Roadmap 提出建議。后續,SIG Cloug Provider Alibaba 也會針對具體的組件分享原理、最佳實踐。
Q & A
Q1:阿里云 K8s 的 Cloud Provider 能否針對每個功能點添加參數來開關嗎?
A1:可以通過配置annotation實現具體功能點,具體可以參考文檔。
Q2:如果我們要在阿里 CCM上的基礎上修改的話,是不是有 K8s 的版本問題,因為我們想用自己的 Kubernetes 特定版本。
A2:可以,CCM 不依賴于 K8s 版本。
Q3:阿里云各個基于 Kubernetes 的容器服務是否直接使用的開源 CCM? 如果是,內部在上線前做了哪些調整?另外,provider_id 格式具體是什么?
A3:是的,完全基于開源版本的 CCM。provider_id 格式為?regionid.{regionid}.regionid.{nodeid}。
Q4:CCM 必須要 K8s 的 nodename 和阿里云的實例 id 一樣嗎?之前運維說必須一樣,但這樣沒有意義的 nodename 用起來很惡心。
A4:不需要。目前只需要配置?providerid 參數即可。
Q5:terway 底層如何加速?kernel level 還是 dpdk?
A5:terway 分為不同的網絡模式,不同模式的網絡配置不通。
- 獨占 ENI 的模式直接使用 IAAS 層的網卡作為 Pod 的網卡,host 上不涉及虛擬化,用戶 Pod 中可以使用 DPDK來加速應用網絡。節點外依賴于阿里云自研的高性能 IAAS 網絡;
- 共享 ENI 模式中使用 Ipvlan 的輕量級虛擬化方案作為節點內虛擬化的手段,性能相對 Host 網絡性能損失極低。
Q6:POD 底層的內核參數允許 namespace 化么?
A6:POD 底層的內核參數是否允許 namespace 化依賴于內核的支持情況,一般在較新的內核上比如 Aliyun Linux2 中的 4.19 的內核,大部分內核參數都允許在 Pod 上指定和修改的。
Q7:在安全容器方面,阿里現在有什么產品?
A7:目前阿里云的容器服務已經提供了安全沙箱作為用戶的可選容器引擎,并且部分阿里云 Serverless 形態的產品如 SAE、ECI 也是構建在安全容器之上。
Q8:Arena 支持多租戶和虛擬 GPU 嗎?
A8:Arena 重用 Kubernetes 的現有用戶授權和多租戶工作機制,不同用戶可以分配不同的 kubeconfig,并利用其進行認證,同時通過 namespace?進行資源隔離和共享。而站在 Arena 的角度,用戶只能看到本 namespace 的訓練和推理任務,其他 namespace 下的任務并不可見。
這里的虛擬 GPU,指的是英偉達的虛擬 GPU 技術,目前針對于阿里云上已經支持 P4 的虛擬 GPU,并且已經和阿里云容器服務 Kubernetes 完成了集成,在阿里云的容器服務上就能體驗。而在 Arena 的角度來說虛擬 GPU 并不是特殊的 GPU 資源,是可以實現對于該資源的調度和編排的。
Q9:多容器共享 GPU 方案支持資源隔離嗎?能限制住顯存嗎?
A9:首先感謝您關注我們的 GPU 共享方案,阿里云容器服務貢獻了業界目前唯一的開源 GPU 共享方案。目前我們的方案還是在調度層面實現多容器的 GPU 共享,并且可以和 TensorFlow 等框架相結合實現應用層面的 GPU 資源限制。可以通過我們的文檔了解目前的使用方式。
但是我們也在和阿里云的底層團隊研發安全和高性能的 GPU 隔離方案,相信在不久的未來,大家能夠體驗到從 GPU 共享調度到隔離的完整方案。
Q10:ExternalDNS 目前支持 alicloud 的 DNS 服務嗎,支持程度如何?
A10:目前是支持 alicloud 的 DNS 服務 privatezone 的,支持同步 K8s 集群的服務 / Pod 等解析到 DNS 服務中,降低集群內部署的 coredns 造成的損耗。
Q11:阿里版本的 nginx ingress 與社區官方版的主要區別是什么呢?
A11:阿里云在社區的基礎上實現了更加高級的功能,諸如?NGINX Server?配置的動態更新,支持基于 Header、Cookie 和請求參數以及權重的混合灰度發布策略等。
Q12:阿里云 Kubernetes 以及這些開發的套件的發布周期是什么樣的?
A12:對于 K8s 大版本的支持力度是半年更新一個穩定版本。同時會不定期做 Bugfix 和安全修復。
Q13:問問邊緣版 ACK@Edge 商用穩定版本已經發布了么,有相關用戶在用么
A13:ACK@Edge 已經可以用于生產環境,目前已經有在線教育、視頻、IoT、CDN 等領域和行業的用戶在使用,商業版預計 2020.6 月前推出。
Q14:宿主 WORKER 節點是否遇到過 cGroup 內存泄漏, 導致 POD cannot allocatie memory 的問題? 如果有如何解決的?
A15:容器服務采用的 cgroup driver 是 systemd cgroup driver,目前沒有遇到這個問題。
Q15:POD 的CPU 內存資源是否和宿主是隔離的?如何隔離的?
A15:可以通過 kubelet 為宿主機預留資源的方式,這樣 Pod 的資源就會被限制在剩余的資源空間內來實現隔離。
Q16:aws 有 eckctl,aliyun 有對應的工具嗎?叫 ackctl ?
A16:可以參見文檔。
Q17:請問阿里云對 Windows 容器的支持程度如何?
A17:目前支持 Window 1809,即將支持 1903。并支持 Linux 集群添加 Windows 節點。
Q18:可以單獨使用某一個開放組件集成到現有的 K8s 集群嗎?
A18: 可以。現有的 K8s 集群完全是滿足 K8s Conformance 測試的。
“阿里巴巴云原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦云原生流行技術趨勢、云原生大規模的落地實踐,做最懂云原生開發者的技術圈。”
總結
以上是生活随笔為你收集整理的回顾 | Kubernetes SIG-Cloud-Provider-Alibaba 首次网研会(含 PPT 下载)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开发函数计算的正确姿势——运行 Sele
- 下一篇: Apache Flink 1.10.0