將Kubernetes引入到裸機邊緣
譯文【51CTO.com快譯】Kubespray是為Kubernetes集群的部署和管理提供Ansible劇本(playbook)的社區項目,最近增加了支持裸機云Packet的功能。這使得Kubernetes集群可以部署在下一代邊緣位置,包括基于手機信號塔的微型數據中心。
Packet的獨特之處在于側重裸機,它擴大了Kubespray的支持范圍,不僅僅支持平常的云:亞馬遜網絡服務、谷歌計算引擎、Azure、OpenStack、vSphere和Oracle云基礎設施。Kubespray使用Terraform和Ansible,借助自動化消除了安裝Kubernetes集群的復雜性。Terraform提供了基礎設施,并安裝了安裝Ansible所需的必備組件。Terraform provider插件能夠支持眾多不同的云提供商。Ansible劇本隨后部署和配置Kubernetes。
由于網上已有將Kubespray部署在Packet上的詳細說明(https://github.com/kubernetes-sigs/kubespray/blob/master/docs/packet.md),我將著重介紹為何裸機支持對Kubernetes來說很重要以及所需的必要條件。
為何支持裸機?
在過去,Kubernetes部署依賴公共云或完全托管版私有云的“舒適工具”(creature comforts),提供用于運行Kubernetes的虛擬機和網絡基礎設施。這增加了一層抽象(比如帶虛擬機的虛擬機管理程序),Kubernetes未必需要這層抽象。事實上,Kubernetes一開始就駐留在裸機上(那時叫谷歌的Borg)。
隨著我們讓工作負載更靠近最終用戶(以邊緣計算的形式),并部署到更多樣化的環境(包括不同架構和大小的混合和本地基礎設施),依賴同樣的公共云底層并非總是可行或理想。比如說,由于邊緣位置受資源限制,直接在裸機上運行Kubernetes更高效、更實際。
注意不足
如果裸機集群下面沒有功能齊全的公共云,就需要直接在Kubernetes集群中管理一些傳統功能,比如負載均衡和存儲編排功能。幸好有一些項目(比如MetalLB和Rook)為Kubernetes提供了這種支持。
MetalLB是第2層和第3層負載均衡系統,集成到Kubespray中,很容易在裸機集群上安裝支持Rook的機制,Rook負責編排Ceph,為Kubernetes集群提供分布式復制存儲。除了支持全部功能外,這種“自備”的存儲和負載均衡方法還擺脫了對特定云服務的依賴,幫助你借助可在任何地方安裝的方法來避免鎖定。
Kubespray支持ARM64處理器。ARM架構(開始經常出現在數據中心級硬件、SmartNIC及其他定制的加速器中)在移動和嵌入式設備有著悠久的歷史,非常適合部署在邊緣。
展望未來,我希望看到MetalLB與Rook更深入地集成,另外在眾多不同的硬件配置上對日常構建版本實行裸機持續集成(CI)。訪問Packet的自動化裸機能夠支持跨多種處理器、存儲方案和網絡環境來進行測試和維護。這將有助于確??梢钥绻苍啤⒙銠C和邊緣環境來妥善地部署和管理基于Kubespray的Kubernetes。
需要社區
Kubespray是一個社區推動的開源項目,離不開核心開發人員和貢獻者以及協助Packet集成的人員。貢獻者包括負責初始提交和代碼審查的Maxime Guyot和Aivars Sterns、負責文檔審查的Rong Zhang和Ed Vielmetti以及維護Packet Go庫和Terraform provider的Tomáš Karásek。
原文標題:Bringing Kubernetes to the bare-metal edge,作者:John Studarus
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】