本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。

Kubernetes 1.6:大規模多使用者、多工作負載

本文由 Aparna Sinha 代表 Kubernetes 1.6 釋出團隊撰寫。

今天我們宣佈釋出 Kubernetes 1.6。

在此版本中,社群的重點是規模和自動化,以幫助您在叢集上為多個使用者部署多個工作負載。我們宣佈支援 5,000 節點叢集。我們將動態儲存配置提升到**穩定**版本。基於角色的訪問控制 (RBAC)、kubefedkubeadm 和一些排程功能正在轉向**測試版**。我們還在整個過程中添加了智慧預設值,以實現開箱即用的更大自動化。

新增功能

規模和聯邦:尋求大規模效能證明的大型企業使用者會很高興地知道,Kubernetes 嚴格的可伸縮性 SLO 現在支援 5,000 節點(150,000 個 Pod)的叢集。這個叢集總大小增加了 150%,由 CoreOS 的新版 etcd v3 提供支援,如果您正在部署搜尋或遊戲等可能增長到佔用更大叢集的應用程式,這是一個好訊息。

對於希望擴充套件到 5,000 個節點以上或跨多個區域或雲部署的使用者,聯邦允許您組合多個 Kubernetes 叢集並透過單個 API 端點訪問它們。在此版本中,kubefed 命令列實用程序升級到**測試版** - 改進了對本地叢集的支援。kubefed 現在自動配置加入叢集上的 kube-dns,並且可以向聯邦元件傳遞引數。

安全和設定:關注安全的使用者會發現,現在處於**測試版**的 RBAC 透過為系統元件提供更嚴格的預設角色,顯著提高了安全性。1.6 版本中的預設 RBAC 策略向控制平面元件、節點和控制器授予範圍許可權。RBAC 允許叢集管理員根據每個名稱空間,選擇性地向特定使用者或服務帳戶授予對特定資源的細粒度訪問許可權。從 1.5 升級到 1.6 的 RBAC 使用者應檢視此處的指南。

尋求在物理或雲伺服器上輕鬆配置安全叢集的使用者可以使用現在處於**測試版**的 kubeadm。kubeadm 已透過一組命令列標誌和基本功能集得到增強,其中包括 RBAC 設定、引導令牌系統的使用以及增強的證書 API

高階排程:此版本添加了一組強大而通用的排程構造,讓您對 Pod 的排程方式有更大的控制權,包括將 Pod 限制在異構叢集中的特定節點上的規則,以及將 Pod 分散或打包到故障域(如節點、機架和區域)中的規則。

節點親和性/反親和性,現在處於**測試版**,允許您根據節點標籤將 Pod 限制為僅排程到某些節點上。使用內建或自定義節點標籤來選擇特定區域、主機名、硬體架構、作業系統版本、專用硬體等。排程規則可以是必需的或首選的,具體取決於您希望排程程式執行它們的嚴格程度。

一個相關的功能,稱為汙點和容忍,使得緊湊地表示將 Pod 從特定節點中排除的規則成為可能。該功能也已進入**測試版**,例如,它使得將一組節點專用於特定使用者集,或者透過排除不需要特殊硬體的 Pod,使具有特殊硬體的節點可用於需要特殊硬體的 Pod 變得容易。

有時您希望將服務或服務中的 Pod 在拓撲上共同排程到彼此附近,例如為了最佳化南北或東西向通訊。或者您希望將服務的 Pod 分散以實現容錯,或者使對立的 Pod 分離,或者確保節點的獨佔租用。Pod 親和性與反親和性,現在處於**測試版**,透過允許您設定在任意拓撲(節點、區域等)中相互分散和打包 Pod 的硬性或軟性要求,從而實現了此類用例。

最後,為了獲得最大的排程靈活性,您可以與預設的 Kubernetes 排程程式並行執行一個或多個自定義排程程式,甚至替代它。每個排程程式負責不同的 Pod 集。此版本中,多個排程程式處於**測試版**。

動態儲存配置:部署有狀態應用程式的使用者將受益於此 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 庫和示例可以在這裡找到。
  • 持久卷中掛載選項的**測試版**支援

容器執行時介面、etcd v3 和 DaemonSet 更新:儘管使用者可能不直接與容器執行時或 API 伺服器資料儲存互動,但它們是 Kubernetes 中面向使用者功能的基礎元件。因此,社群致力於擴充套件這些和其他系統元件的功能。

  • Docker-CRI 實現是**測試版**,預設在 kubelet 中啟用。對其他執行時,cri-ofraktirkt,也已實現了**阿爾法版**支援。
  • 對於新叢集,API 伺服器的預設後端儲存已升級為預設使用 etcd v3。如果您從 1.5 叢集升級,應注意透過規劃資料遷移視窗來確保連續性。
  • Kubelet 透過公開管理員可配置的 節點可分配 功能來保留系統守護程序的計算資源,從而提高了節點可靠性。
  • DaemonSet 更新允許您對 DaemonSet 執行滾動更新

Alpha 功能:此版本主要側重於功能的成熟,但是,為了支援路線圖,添加了一些 Alpha 功能。

  • 樹外雲提供商支援增加了一個新的 `cloud-controller-manager` 二進位制檔案,可用於測試新的樹外雲提供商流程
  • 在節點出現問題時,結合 tolerationSeconds 實現每個 Pod 的驅逐,允許使用者調整 Pod 繫結到出現問題的節點的時間長度
  • Pod 注入策略 添加了一個新的 API 資源 PodPreset,用於在建立 Pod 時注入資訊,例如 secrets、卷、卷掛載和環境變數。
  • Horizontal Pod Autoscaler 中自定義指標支援已更改為使用
  • 引入了對僅 Docker 執行時的多 Nvidia GPU 支援

這些只是我們今年首次釋出的一些亮點。如需完整列表,請訪問發行說明

社群
此次釋出得益於我們龐大而開放的社群。我們共同完成了近 5,000 次提交,作者約 275 人。為了將眾多支持者聚集在一起,社群發起了一項名為 K8sPort 的新計劃,這是一個線上中心,社群可以在其中參與遊戲化挑戰併為其貢獻獲得積分。有關該計劃的更多資訊,請參閱此處

釋出過程

衷心感謝 1.6 版本的釋出團隊(由 CoreOS 的 Dan Gillespie 領導),感謝他們為 1.6 版本的釋出所做的工作。該釋出團隊是 Kubernetes 社群致力於社群治理的典範。Dan 是第一位非谷歌的釋出經理,他與團隊的其他成員一起在整個釋出過程中(基於 1.5 版本釋出經理 Saad Ali 的出色工作)努力發現和記錄部落知識,揭示仍然需要特殊許可權的工具和流程,並優先處理工作以改進 Kubernetes 釋出流程。非常感謝團隊。

使用者採納

我們持續看到 Kubernetes 在各行各業和各種規模的企業中迅速普及。此外,採用來自全球各地,從美國田納西州的一家初創公司到中國的財富 500 強公司。

  • 京東,中國最大的網際網路公司之一,將 Kubernetes 與其 OpenStack 部署結合使用。他們迄今已將 20% 的應用程式遷移到 Kubernetes 上,並且每天執行 20,000 個 Pod。有關其設定的更多資訊,請參閱此處
  • Spire 是一家位於田納西州的初創公司,其公有云提供商遭遇中斷,但由於 Kubernetes 能夠將其工作負載移動到不同的區域,因此沒有停機。在此處閱讀他們的完整體驗:這裡

“有了 Kubernetes,我從未感到恐慌,只有一種敬畏之情,看著自動緩解措施的發生。”

  • 在此處與社群分享您的 Kubernetes 用例故事:此處

可用性
Kubernetes 1.6 可在 GitHub 上此處下載,也可透過 get.k8s.io 獲取。要開始使用 Kubernetes,請嘗試其中一個互動式教程

參與其中
2017 年 3 月 29-30 日,CloudNativeCon + KubeCon 在柏林舉行。我們希望與社群的許多成員齊聚一堂,並在那裡分享更多內容!

在我們的每週社群會議上發表您的看法:

非常感謝您的貢獻和支援!

附言:閱讀此深度文章系列,瞭解 Kubernetes 1.6 中的新功能