本文已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
Kubernetes 1.6:大規模多使用者、多工作負載
本文由 Aparna Sinha 代表 Kubernetes 1.6 發布團隊撰寫。
今天我們宣布 Kubernetes 1.6 的發布。
在此版本中,社群的重點在於規模和自動化,以協助您在叢集上為多個使用者部署多個工作負載。我們宣布支援 5,000 個節點的叢集。我們已將動態儲存佈建移至穩定版。基於角色的存取控制 (RBAC)、kubefed、kubeadm 和多個排程功能正在移至Beta 版。我們還在各處新增了智慧預設值,以實現更高度的開箱即用自動化。
新功能
規模和聯邦:尋求大規模效能證明的企業級使用者將很高興得知 Kubernetes 嚴格的擴展性 SLO 現在支援 5,000 個節點(150,000 個 Pod)的叢集。若您正在部署搜尋或遊戲等可擴展以消耗更大叢集的應用程式,由 CoreOS 的新版本 etcd v3 提供支援的叢集總規模增加 150%,是個好消息。
對於想要擴展超過 5,000 個節點或跨越多個區域或雲端的使用者,聯邦可讓您組合多個 Kubernetes 叢集,並透過單一 API 端點對其進行定址。在此版本中,kubefed 命令列公用程式已升級至 Beta 版 - 改善了對地端部署叢集的支援。kubefed 現在自動配置加入叢集上的 kube-dns,並且可以將引數傳遞至聯邦元件。
安全性與設定:關注安全性的使用者會發現 RBAC,現在為 Beta 版,透過針對系統元件更嚴格範圍的預設角色,增加了顯著的安全性優勢。1.6 中的預設 RBAC 策略授予控制平面元件、節點和控制器範圍內的權限。RBAC 允許叢集管理員選擇性地授予特定使用者或服務帳戶對每個命名空間特定資源的細緻存取權限。從 1.5 升級到 1.6 的 RBAC 使用者應查看 此處的指南。
尋找在實體或雲端伺服器上佈建安全叢集的簡易方法的使用者可以使用 kubeadm,現在為 Beta 版。kubeadm 已透過一組命令列旗標和基本功能集進行增強,其中包括 RBAC 設定、啟動程序權杖系統的使用,以及增強的 憑證 API。
進階排程:此版本新增了一組強大且多功能的排程結構,讓您更有效地控制 Pod 的排程方式,包括將 Pod 限制在異質叢集中的特定節點的規則,以及在節點、機架和區域等故障網域中分散或打包 Pod 的規則。
節點親和性/反親和性,現在為 Beta 版,可讓您根據節點標籤限制 Pod 僅排程在某些節點上。使用內建或自訂節點標籤來選取特定區域、主機名稱、硬體架構、作業系統版本、特殊硬體等。排程規則可以是必要或偏好,具體取決於您希望排程器強制執行規則的嚴格程度。
一個相關的功能,稱為 污點和容忍度,可以簡潔地表示將 Pod 從特定節點排除的規則。此功能現在也為 Beta 版,例如,它可以輕鬆地將節點集專用於特定的使用者集,或將具有特殊硬體的節點保留給需要特殊硬體的 Pod,方法是排除不需要特殊硬體的 Pod。
有時您希望在拓撲上將服務或服務中的 Pod 共同排程在彼此附近,例如為了最佳化南北向或東西向通訊。或者,您想要分散服務的 Pod 以提高容錯能力,或保持對立 Pod 的分離,或確保節點的獨佔性。Pod 親和性和反親和性,現在為 Beta 版,透過讓您設定在任意拓撲(節點、區域等)內相對於彼此分散和打包 Pod 的硬性或軟性需求,來實現此類使用案例。
最後,為了獲得極致的排程彈性,您可以與預設 Kubernetes 排程器一起或取代它執行您自己的自訂排程器。每個排程器負責不同的 Pod 集。多個排程器在此版本中為 Beta 版。
動態儲存佈建:部署具狀態應用程式的使用者將受益於此 Kubernetes 版本中廣泛的儲存自動化功能。
自早期以來,Kubernetes 就能夠根據 Pod 規格自動連接和分離儲存裝置、格式化磁碟、掛載和卸載磁碟區,並在 Pod 在節點之間移動時無縫地執行此操作。此外,PersistentVolumeClaim (PVC) 和 PersistentVolume (PV) 物件將儲存請求與特定儲存實作分離,使 Pod 規格可在各種雲端和地端部署環境中移植。在此版本中,StorageClass 和 動態磁碟區佈建 已升級為穩定版,透過按需建立和刪除儲存裝置,完成自動化故事,無需預先佈建。
此設計允許叢集管理員在叢集中定義和公開多種風味的儲存裝置,每種儲存裝置都有一組自訂參數。終端使用者可以不再擔心儲存裝置佈建方式的複雜性和細微差別,同時仍然可以從多個儲存選項中進行選擇。
在 1.6 中,Kubernetes 隨附一組內建預設值,可完全自動化儲存佈建生命週期,讓您可以專注於您的應用程式。具體而言,Kubernetes 現在預先安裝 AWS、Azure、GCP、OpenStack 和 VMware vSphere 的系統定義 StorageClass 物件預設情況下。這為這些供應商上的 Kubernetes 使用者帶來了動態儲存佈建的好處,而無需手動設定 StorageClass 物件。這是這些雲端上的 PVC 物件的預設行為變更。請注意,預設行為是動態佈建的磁碟區是使用「刪除」回收策略建立的。這表示一旦 PVC 被刪除,動態佈建的磁碟區將自動刪除,因此使用者無需執行額外的「清理」步驟。
此外,我們還擴展了整體支援的儲存範圍,包括
- ScaleIO Kubernetes 磁碟區外掛程式,使 Pod 能夠無縫存取和使用儲存在 ScaleIO 磁碟區上的資料。
- Portworx Kubernetes 磁碟區外掛程式,新增了使用 Portworx 作為 Kubernetes 叢集儲存供應商的功能。Portworx 集結您的伺服器容量,並將您的伺服器或雲端執行個體轉變為融合、高可用性的運算和儲存節點。
- 在使用 COS 節點映像的叢集上支援 NFSv3、NFSv4 和 GlusterFS
- 支援使用者編寫/執行動態 PV 佈建器。golang 程式庫和範例可在此處找到。
- Beta 版 支援持續性磁碟區中的 掛載選項
容器執行階段介面、etcd v3 和 Daemon set 更新:雖然使用者可能不會直接與容器執行階段或 API 伺服器資料儲存互動,但它們是 Kubernetes 中使用者面向功能的基本元件。因此,社群投入擴展這些和其他系統元件的功能。
- Docker-CRI 實作是 Beta 版,並且在 kubelet 中預設啟用。也已實作其他執行階段的 Alpha 版 支援,cri-o、frakti、rkt。
- API 伺服器的預設後端儲存已升級為預設使用 etcd v3 用於新叢集。如果您是從 1.5 叢集升級,應謹慎規劃資料移轉視窗以確保連續性。
- 節點可靠性已提高,因為 Kubelet 公開管理員可配置的 節點可分配功能,以保留系統守護程式的運算資源。
- Daemon set 更新可讓您在 daemon set 上執行滾動更新
Alpha 版功能:此版本主要著重於使功能成熟,但是,新增了一些 Alpha 版功能以支援藍圖
- 樹狀結構外雲端供應商支援新增了一個新的 cloud-controller-manager 二進位檔,可用於測試新的核心外雲端供應商流程
- 在節點發生問題時的 每個 Pod 可配置的驅逐行為與 tolerationSeconds 結合使用,可讓使用者調整 Pod 保持繫結到遇到問題的節點的持續時間
- Pod 注入策略新增了一個新的 API 資源 PodPreset,可在建立時將機密、磁碟區、磁碟區掛載和環境變數等資訊注入到 Pod 中。
- 自訂指標在水平 Pod 自動調整程式中的支援已變更為使用
- 僅在 Docker 執行階段中引入多個 Nvidia GPU 支援
這些只是我們今年第一個版本中的一些亮點。如需完整清單,請造訪發行說明。
社群
此版本的發布歸功於我們龐大且開放的社群。我們共同推動了將近 5,000 次提交,作者約 275 位。為了將我們的眾多擁護者聚集在一起,社群啟動了一個名為 K8sPort 的新計畫,這是一個線上中心,社群可以在其中參與遊戲化挑戰,並因其貢獻而獲得積分。請在此處閱讀有關該計畫的更多資訊 here。
發布流程
非常感謝 1.6 的 發布團隊(由 CoreOS 的 Dan Gillespie 領導)為 1.6 版本的發布所做的工作。此發布團隊是 Kubernetes 社群致力於社群治理的典範。Dan 是第一位非 Google 發布經理,他和團隊的其他成員在整個發布過程中(以 1.5 發布經理 Saad Ali 的出色工作為基礎)努力揭露和記錄部落知識,闡明仍然需要特殊權限的工具和流程,並優先處理改進 Kubernetes 發布流程的工作。非常感謝團隊。
使用者採用
我們持續看到 Kubernetes 在各行各業和各種規模的企業中被快速採用。此外,採用來自全球各地,從美國田納西州的新創公司到中國的財富 500 強公司。
- 中國最大的網際網路公司之一京東 (JD.com) 將 Kubernetes 與其 OpenStack 部署結合使用。他們迄今已將 20% 的應用程式遷移到 Kubernetes 上,並且每天已執行 20,000 個 Pod。請在此處閱讀有關其設定的更多資訊 here。
- 總部位於田納西州的新創公司 Spire 親眼目睹其公有雲供應商發生停機事件,但由於 Kubernetes 能夠將其工作負載移至不同的區域,因此實現了零停機時間。請在此處閱讀他們的完整體驗 here。
「有了 Kubernetes,從未有過一絲恐慌,只是一種敬畏之情,看著自動緩解的發生。」
- 請在此處與社群分享您的 Kubernetes 使用案例故事 here。
可用性
Kubernetes 1.6 可在此處下載 here GitHub 上以及透過 get.k8s.io。若要開始使用 Kubernetes,請試試這些互動式教學課程。
參與其中
歐洲 CloudNativeCon + KubeCon 將於本週 2017 年 3 月 29-30 日在柏林舉行。我們希望與社群中的許多人聚在一起,並在那裡分享更多資訊!
在我們的每週 社群會議上分享您的聲音:
- 在 Stack Overflow 上發布問題(或回答問題)
- 在 Twitter 上關注我們 @Kubernetesio 以獲取最新更新
- 在 Slack 上與社群聯繫
非常感謝您的貢獻和倡導!
附註:閱讀此一系列深入文章,了解 Kubernetes 1.6 的新功能