Kubernetes 1.15:可擴充套件性和持續改進

我們很高興地宣佈釋出 Kubernetes 1.15,這是我們 2019 年的第二個版本!Kubernetes 1.15 包含 25 項增強功能:2 項進入穩定版,13 項進入 Beta 版,10 項進入 Alpha 版。此版本的主要主題是:

  • 持續改進
    • 專案的可持續性不僅僅是功能。許多 SIG 都在努力改進測試覆蓋率,確保基礎功能保持可靠,核心功能集的穩定性,並致力於完善現有功能和清理積壓工作。
  • 可擴充套件性
    • 社群一直在要求持續支援可擴充套件性,因此本週期圍繞 CRD 和 API Machinery 展開了更多工作。本週期的大部分增強功能都來自 SIG API Machinery 及相關領域。

讓我們深入瞭解此版本的主要功能

核心 Kubernetes API 周圍的可擴充套件性

CustomResourceDefinitions 新開發的主題是資料一致性和原生行為。使用者不應該注意到互動是與 CustomResource 還是與 Golang 原生資源進行的。我們正在大步邁向 CRD 的 GA 版本以及未來版本中准入 Webhook 的 GA。

在此方向上,我們重新思考了 CRD 中基於 OpenAPI 的驗證模式,從 1.15 開始,我們根據一個名為“結構化模式”的限制檢查每個模式。這基本上強制 CustomResource 中每個欄位的非多型和完整型別。我們將來將要求結構化模式,特別是對於下面列出的所有新功能,並在 `NonStructural` 條件中列出違規。非結構化模式暫時在 v1beta1 API 組中繼續工作。但所有重要的 CRD 應用程式都應在可預見的將來遷移到結構化模式。

關於構成結構化模式的詳細資訊將於本週晚些時候在 kubernetes.io 的部落格文章中釋出,當然,它也在 Kubernetes 文件中有所記錄

Beta:CustomResourceDefinition Webhook 轉換

自 1.14 以來,CustomResourceDefinitions 以 Beta 形式支援多個版本。在 Kubernetes 1.15 中,它們獲得了在不同版本之間即時轉換的能力,就像使用者長期以來習慣的原生資源一樣。CRD 的轉換透過 Webhook 實現,由叢集管理員部署在叢集內部。此功能在 Kubernetes 1.15 中升級為 Beta 版,將 CRD 提升到全新的水平,適用於重要的 CRD 應用程式。

Beta:CustomResourceDefinition OpenAPI 釋出

kube-apiserver 長期以來一直透過 `/openapi/v2` 提供原生型別的 OpenAPI 規範,並且它們被許多元件使用,特別是 kubectl 客戶端驗證、kubectl explain 和基於 OpenAPI 的客戶端生成器。

CRD 的 OpenAPI 釋出將在 Kubernetes 1.15 中作為 Beta 版提供,但仍然僅適用於結構化模式。

Beta:CustomResourceDefinitions 剪枝

剪枝是自動移除傳送到 Kubernetes API 的物件中未知欄位的功能。如果欄位未在 OpenAPI 驗證模式中指定,則該欄位是未知的。這既是資料一致性功能,也與安全性相關。它強制只有 CRD 開發者指定的資料結構才能持久化到 etcd。這是原生資源的行為,也將適用於 CRD,從 Kubernetes 1.15 開始作為 Beta 版提供。

剪枝透過 CustomResourceDefinition 中的 `spec.preserveUnknownFields: false` 啟用。未來的 apiextensions.k8s.io/v1 版本的 CRD 將強制執行剪枝(可能需要但明確必須選擇退出)。

剪枝要求 CRD 開發者提供完整、結構化的驗證模式,可以是頂層模式,也可以是 CRD 所有版本的模式。

Alpha:CustomResourceDefinition 預設值

CustomResourceDefinitions 獲得預設值支援。預設值使用 OpenAPI 驗證模式中的 `default` 關鍵字指定。預設值會在傳送到 API 的物件中未指定欄位時設定,以及從 etcd 讀取時設定。

預設值將在 Kubernetes 1.15 中作為結構化模式的 Alpha 版提供。

Beta:准入 Webhook 重複呼叫和改進

修改和驗證准入 Webhook 越來越成為擴充套件 Kubernetes API 的專案的主流。到目前為止,修改 Webhook 只會被按字母順序呼叫一次。較早執行的 Webhook 無法對鏈中較晚呼叫的 Webhook 的輸出作出反應。在 Kubernetes 1.15 中,情況將發生變化。

修改 Webhook 可以透過指定 `reinvocationPolicy: IfNeeded` 來選擇至少一次重複呼叫。如果後面的修改 Webhook 修改了物件,則較早的 Webhook 將獲得第二次機會。

這要求 Webhook 具有冪等性行為,能夠應對第二次呼叫。

不計劃增加另一輪呼叫,因此 Webhook 作者仍需謹慎對待他們對被准入物件所做的更改。最後,呼叫驗證 Webhook 以驗證承諾的不變性是否已實現。

准入 Webhook 還有更多小的更改,特別是 `objectSelector` 用於將具有特定標籤的物件從准入中排除,以及 Webhook 伺服器的任意埠(不僅限於 443)。

叢集生命週期穩定性和可用性改進

使 Kubernetes 安裝、升級和配置更加健壯一直是 SIG Cluster Lifecycle 本週期的主要重點(請參閱我們上次的社群更新)。針對 1.15,裸金屬工具和生產就緒的使用者案例(例如高可用性用例)的 Bug 修復已獲得優先權。

kubeadm,叢集生命週期構建塊,持續獲得高效引導生產叢集所需的功能和穩定性工作。kubeadm 已將高可用性 (HA) 功能提升為 Beta 版,允許使用者使用熟悉的 `kubeadm init` 和 `kubeadm join` 命令來配置和部署 HA 控制平面。已專門建立了一個全新的測試套件,以確保這些功能將長期保持穩定。

在 1.15 中,證書管理變得更加健壯,kubeadm 現在可以在證書到期之前無縫輪換所有證書(在升級時)。有關如何管理證書的資訊,請檢視 kubeadm 文件

kubeadm 配置檔案 API 在 1.15 中從 v1beta1 遷移到 v1beta2。

最後,讓我們慶祝 kubeadm 現在擁有了自己的 Logo

kubeadm official logo

CSI 的持續改進

在 Kubernetes v1.15 中,SIG Storage 繼續致力於將樹內卷外掛遷移到容器儲存介面 (CSI)。SIG Storage 致力於使 CSI 的功能與樹內功能保持一致,包括調整大小、內聯卷等功能。SIG Storage 在 CSI 中引入了 Kubernetes 儲存子系統中尚不存在的新 Alpha 功能,例如卷克隆。

卷克隆允許使用者在配置新卷時將另一個 PVC 指定為“DataSource”。如果底層儲存系統支援此功能並在其 CSI 驅動程式中實現“CLONE_VOLUME”功能,則新卷將成為源卷的克隆。

其他值得注意的功能更新

檢視發行說明以獲取值得注意的功能和修復的完整列表。

可用性

Kubernetes 1.15 可在 GitHub 上下載。要開始使用 Kubernetes,請檢視這些互動式教程。您還可以使用 kubeadm 輕鬆安裝 1.15。

功能部落格系列

如果您有興趣深入探索這些功能,請本週和下週回來檢視我們的 Kubernetes 日系列,屆時我們將重點介紹以下功能的詳細演練:

  • CRD 的未來:結構化模式
  • 為 Kubernetes 引入卷克隆 Alpha
  • Kubeadm 中的自動化高可用性

釋出團隊

此版本是透過數百位貢獻了技術和非技術內容的個人努力實現的。特別感謝由 Pivotal Software 高階技術專案經理 Claire Laurence 領導的釋出團隊。釋出團隊的 38 位成員協調了釋出的許多方面,從文件到測試、驗證和功能完整性。

隨著 Kubernetes 社群的發展,我們的釋出過程展現了開源軟體開發中令人驚歎的協作。Kubernetes 繼續以快速的速度獲得新使用者。這種增長創造了一個積極的反饋迴圈,更多的貢獻者提交程式碼,從而建立了一個更充滿活力的生態系統。迄今為止,Kubernetes 已經擁有超過 32,000 名個人貢獻者,以及一個擁有超過 66,000 人的活躍社群。

專案速度

CNCF 繼續完善 DevStats,這是一個雄心勃勃的專案,旨在視覺化專案中眾多貢獻。 K8s DevStats 展示了主要公司貢獻者的貢獻細分,以及一系列令人印象深刻的預配置報告,涵蓋從個人貢獻者到拉取請求生命週期時間的所有內容。在過去的一年中,平均每月有 379 家不同的公司和超過 2,715 名個人為 Kubernetes 做出貢獻。 檢視 DevStats,瞭解 Kubernetes 專案和社群的整體發展速度。

使用者亮點

成熟的全球組織正在大規模使用生產中的 Kubernetes。社群最近釋出的成功案例包括:

Kubernetes 正在幫助您的團隊嗎?與社群分享您的故事

生態系統更新

KubeCon

全球最大的 Kubernetes 盛會 KubeCon + CloudNativeCon 將於 2019 年 6 月 24-26 日在上海(與開源峰會同期舉行)和 11 月 18-21 日在聖地亞哥舉行。這些會議將包括技術會議、案例研究、開發者深度探討、沙龍等內容!立即註冊

網路研討會

歡迎 Kubernetes 1.15 釋出團隊的成員於太平洋時間 7 月 23 日上午 10 點參加會議,瞭解此版本中的主要功能。在此註冊

參與其中

參與 Kubernetes 最簡單的方式是加入與您興趣相符的眾多特殊興趣小組 (SIG) 之一。有什麼想向 Kubernetes 社群宣佈的嗎?在我們的每週社群會議上,並透過以下渠道分享您的聲音。感謝您一直以來的反饋和支援。