做者 | 湯志敏、謝瑤瑤html
會議完整視頻回顧:https://www.bilibili.com/video/av88668762node
2 月 12 日,阿里雲和 CNCF 聯合舉辦了線上研討會,首次完整介紹了阿里雲對 Kubernetes 社區的佈局,包括了 10 個類別,20 多個開源項目,提供了完整的 Kubernetes 生命週期管理。本文聚集了這次會議完整視頻回顧及資料下載,並整理了會議上未能及時回答的問題,但願可以對你們有所幫助~nginx
關注「阿里巴巴雲原生」公衆號,後臺回覆 「會議」 便可下載 PPT。git
隨着時間的發展,愈來愈多的企業在生產環境使用 Kubernetes。Kubernetes 被廣爲接受,離不開其良好的設計和繁榮的社區。目前圍繞着 Kubernetes 已經有 20 個左右的興趣小組(SIG),SIG Cloud Provider 則是 Kubernetes 的重要興趣小組之一,致力於推進全部雲廠商以標準的能力提供 Kubernetes 服務。github
SIG-Cloud-Provider-Alibaba 是 SIG Cloud Provider 在國內惟一的子項目。算法
Cloud Provider SIG 是 Kubernetes 的雲廠商興趣小組,致力於讓 Kubernetes 的生態系統往廠商中立的方向演進,他會負責協調不一樣廠商儘量以統一的標準來知足開發者的需求。目前加入 Cloud Provider SIG 包括了 7 家雲廠商,包括 AWS、GCP、阿里雲、IBMCloud 等。後端
在全面上雲的時代,雲已經重塑了企業IT架構。雲原生計算就是一組最佳實踐和方法論,如何在公共雲、專有云、多雲環境中,構建可伸縮、健壯、鬆耦合的應用,能夠更快速的創新和低成本的試錯。api
阿里雲做爲國際有影響力的雲廠商,也但願可以推進Kubernetes的進一步標準化,並進一步和橫向雲廠商如AWS、Google、Azure進行技術協同,優化雲和Kubernetes鏈接,並統一不一樣組件的模塊化和標準化協議。安全
對於 Kubernetes 的開發者和用戶,咱們但願基於阿里雲打造 Kubernetes 的最佳運行環境,並將圍繞在 Kubernetes 的阿里雲插件開源出來。而阿里雲容器服務 ACK 也會盡可能複用這些組件。服務器
Kubernetes 做爲雲原生時代的應用操做系統,已經成爲事實上的標準。阿里雲在 Kubernetes 實踐的過程當中開源了衆多的項目,如位於底層的計算、存儲、網絡、安全等相關的 5 個大的類別和上層領域相關的 AI、應用管理、遷移、Serveless 等 5 個大的類別,爲用戶應用提供全棧式生命週期管理。
SIG-Cloud-Provider-Alibaba 爲 K8s 在阿里雲上的雲原生最佳實踐提供一個溝通的橋樑,經過興趣小組的方式讓全部參與的我的、組織理解 CloudProvider 的原理並運用到生產實踐中,實現其業務價值。
詳見下文。
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 實現了 Kubernetes CNI 規範,專爲阿里雲環境優化,並支持豐富的企業特性,支持 VPC 路由模式,ENI 模式、ENI 多 IP 等多種模式等,性能優秀,ENI 模式相比原生 VPC 提高 10% 左右。
Terway 和阿里雲底層 IAAS 網絡深度整合,讓 Pod 做爲雲網絡一等公民無縫使用 CEN、SLB 等網絡產品,使用彈性網卡讓網絡性能 0 損失,使容器化的過程沒有體驗和性能的降級。同時支持 Kubernetes 網絡策略,Qos 流控等高級功能。
阿里雲 CSI 插件實現了在 Kubernetes 中對容器存儲卷的生命週期管理,支持動態建立、掛載、使用雲數據卷。 當前的 CSI 實現基於 K8S 1.14 以上的版本;支持的阿里雲存儲:雲盤、NAS、CPFS、OSS、LVM 等。
Log-Pilot 是一個高效的智能容器日誌採集工具,其不只可以便捷地採集容器的標準輸出日誌,同時還可以動態地發現採集容器內部的日誌文件;其徹底採用聲明式的配置方式,可以自動地感知集羣中容器的狀態來動態地配置容器日誌採集,同時其還具有不少高級特性,諸如日誌的自動 CheckPoint 及句柄保持機制、支持自動日誌數據打標以及自定義 Tag 等機制,可靈活地將日誌數據採集到多種不一樣的日誌存儲後端,好比 ElasticSearch、Kafka、Logstash、Redis,Graylog 等。
Arena 是基於 Kubernetes 的機器學習輕量級解決方案,支持數據準備,模型開發,模型訓練,模型預測的完整生命週期,提高數據科學家工做效率。方便數據科學家和算法工程師快速開始利用阿里雲的資源(包括 ECS 雲服務器、GPU 雲服務器、分佈式存儲 NAS、CPFS、 對象存儲 OSS、Elastic MapReduce、負載均衡等服務)執行數據準備、模型開發、模型訓練、評估和預測等任務。並可以方便地將深度學習能力轉化爲服務 API,加速與業務應用的集成。在提高數據科學家效率的同時,經過 GPU 資源的可視化管理和設備的共享調度提高集羣 GPU 資源的利用率。
本次線上研討會首次介紹了阿里雲在 Kubernetes 的社區佈局。受限於時間和篇幅,並不能介紹完全部開源組件的詳細信息,而但願能夠授之以漁,讓對 Kubernetes 感興趣的開發者找到對應的開源項目。咱們歡迎更多的開發者一塊兒來參與共建,不管是提 PR 或 Issue,仍是對 Roadmap 提出建議。後續,SIG Cloug Provider Alibaba 也會針對具體的組件分享原理、最佳實踐。
Q1:阿里雲 K8s 的 Cloud Provider 可否針對每一個功能點添加參數來開關嗎?
A1:能夠經過配置annotation實現具體功能點,具體能夠參考文檔。
Q2:若是咱們要在阿里 CCM上的基礎上修改的話,是否是有 K8s 的版本問題,由於咱們想用本身的 Kubernetes 特定版本。
A2:能夠,CCM 不依賴於 K8s 版本。
Q3:阿里雲各個基於 Kubernetes 的容器服務是否直接使用的開源 CCM? 若是是,內部在上線前作了哪些調整?另外,provider_id 格式具體是什麼?
A3:是的,徹底基於開源版本的 CCM。provider_id 格式爲 ${regionid}.${nodeid}。
Q4:CCM 必需要 K8s 的 nodename 和阿里雲的實例 id 同樣嗎?以前運維說必須同樣,但這樣沒有意義的 nodename 用起來很噁心。<br />A4:不須要。目前只須要配置 providerid 參數便可。
Q5:terway 底層如何加速?kernel level 仍是 dpdk?
A5:terway 分爲不一樣的網絡模式,不一樣模式的網絡配置不通。
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 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,作最懂雲原生開發者的技術圈。」