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 版本和下一個版本之一中 admission webhooks 的 GA 大步邁進。

在這個方向上,我們重新思考了 CRD 中基於 OpenAPI 的驗證架構,並且從 1.15 開始,我們針對稱為「結構化架構」的限制檢查每個架構。這基本上強制執行 CustomResource 中每個欄位的非多型和完整類型化。我們將來將需要結構化架構,特別是對於包括下面列出的所有新功能,並在 NonStructural 條件中列出違規行為。非結構化架構在 v1beta1 API 群組中目前仍然可以運作。但是,任何嚴肅的 CRD 應用程式都被敦促在可預見的未來遷移到結構化架構。

關於什麼構成結構化架構的詳細資訊將在本週稍後在 kubernetes.io 上的部落格文章中發布,當然,它也在 Kubernetes 文件中有所記錄

Beta 版:CustomResourceDefinition Webhook 轉換

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

Beta 版:CustomResourceDefinition OpenAPI 發布

長期以來,kube-apiserver 一直在 /openapi/v2 上提供原生類型的 OpenAPI 規範,並且許多組件都在使用它們,尤其是 kubectl 用戶端驗證、kubectl explain 和基於 OpenAPI 的用戶端產生器。

Kubernetes 1.15 將以 Beta 版形式提供 CRD 的 OpenAPI 發布,但再次僅適用於結構化架構。

Beta 版:CustomResourceDefinitions 修剪

修剪是自動刪除傳送到 Kubernetes API 的物件中未知欄位的過程。如果欄位未在 OpenAPI 驗證架構中指定,則該欄位為未知欄位。這既是資料一致性功能,也是安全性相關功能。它強制僅將 CRD 開發人員指定的資料結構持久化到 etcd。這是原生資源的行為,也將適用於 CRD,從 Kubernetes 1.15 中的 Beta 版開始。

修剪透過 CustomResourceDefinition 中的 spec.preserveUnknownFields: false 啟動。未來 CRD 的 apiextensions.k8s.io/v1 變體將強制執行修剪(可能會選擇退出,但必須明確)。

修剪要求 CRD 開發人員提供完整、結構化的驗證架構,可以是頂層架構,也可以是 CRD 所有版本的架構。

Alpha 版:CustomResourceDefinition 預設值

CustomResourceDefinitions 獲得對預設值的支援。預設值是使用 OpenAPI 驗證架構中的 default 關鍵字指定的。預設值是為傳送到 API 的物件中未指定的欄位設定的,並且在從 etcd 讀取時也會設定。

預設值將在 Kubernetes 1.15 中以 Alpha 版形式提供,適用於結構化架構。

Beta 版:Admission Webhook 重新調用和改進

對於擴展 Kubernetes API 的專案而言,Mutating 和 validating admission webhooks 變得越來越主流。到目前為止,mutating webhooks 僅被調用一次,按字母順序排列。較早運行的 webhook 無法對鏈中稍後調用的 webhooks 的輸出做出反應。在 Kubernetes 1.15 中,這將會改變

Mutating webhooks 可以透過指定 reinvocationPolicy: IfNeeded 來選擇加入至少一次重新調用。如果稍後的 mutating webhook 修改了物件,則較早的 webhook 將獲得第二次機會。

這要求 webhooks 具有類似等冪行為,可以應對第二次調用。

不打算新增另一輪調用,因此 webhook 作者仍然必須小心他們實施的已接受物件的變更。最後,調用 validating webhooks 以驗證承諾的不變性是否已實現。

對 admission webhook 進行了更多較小的變更,特別是 objectSelector 用於從 admission 中排除具有特定標籤的物件,以及用於 webhook 伺服器的任意埠(不僅限於 443)。

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

使 Kubernetes 安裝、升級和組態更加穩健的工作一直是 SIG Cluster Lifecycle 本次週期的主要重點(請參閱我們上次的 社群更新)。跨裸機工具和生產就緒使用者案例的錯誤修復,例如高可用性使用案例,已在 1.15 版本中獲得優先順序。

kubeadm,叢集生命週期建構塊,繼續接收高效啟動生產叢集所需的功能和穩定性工作。kubeadm 已將高可用性 (HA) 功能升級為 Beta 版,允許使用者使用熟悉的 kubeadm initkubeadm join 命令來 組態和部署 HA 控制平面。已建立一個全新的測試套件,專門用於確保這些功能在一段時間內保持穩定。

憑證管理在 1.15 版本中變得更加穩健,kubeadm 現在會在憑證過期之前(在升級時)無縫輪換所有憑證。查看 kubeadm 文件 以獲取有關如何管理憑證的資訊。

kubeadm 組態檔 API 在 1.15 版本中從 v1beta1 遷移到 v1beta2。

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

kubeadm official logo

CSI 的持續改進

在 Kubernetes v1.15 中,SIG Storage 繼續努力 實現樹狀結構內磁碟區外掛程式遷移 到容器儲存介面 (CSI)。SIG Storage 致力於使 CSI 在功能上與樹狀結構內功能保持對等,包括調整大小、內聯磁碟區等功能。SIG Storage 在 CSI 中引入了新的 Alpha 功能,這些功能在 Kubernetes 儲存子系統中尚不存在,例如磁碟區克隆。

磁碟區克隆使用戶可以在佈建新磁碟區時將另一個 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 將其資源利用率提高 20-50%,降低 IT 基礎架構成本,並將部署時間從數小時縮短到 10-15 分鐘。
  • 蒙特婁市正在使用 Kubernetes 將部署時間從數月縮短到數小時,並在 8 台機器上運行 200 個應用程式組件,由 5 個人操作 Kubernetes 叢集。
  • SLAMTEC 正在使用 Kubernetes 以及其他 CNCF 專案來實現 18 個月以上的 100% 正常運行時間,節省 50% 的故障排除和除錯時間,以及 30% 的 CI/CD 工作時間。
  • ThredUP 已將關鍵服務的部署時間平均減少 約 50%,並將部署的交付週期縮短至 20 分鐘以內。

Kubernetes 是否對您的團隊有所幫助?與社群分享您的故事

生態系統更新

KubeCon

全球最大的 Kubernetes 聚會 KubeCon + CloudNativeCon 即將於 2019 年 6 月 24 日至 26 日在 上海 舉行(與開放原始碼峰會同期舉辦),並於 11 月 18 日至 21 日在 聖地牙哥 舉行。這些會議將舉辦技術講座、案例研究、開發人員深入探討、沙龍等等!立即註冊

網路研討會

加入 Kubernetes 1.15 發布團隊成員於太平洋時間 7 月 23 日上午 10 點舉行的網路研討會,以了解此版本的主要功能。在此處註冊 here

參與其中

參與 Kubernetes 最簡單的方式是加入許多與您的興趣相符的特殊興趣小組 (SIG) 之一。有什麼想向 Kubernetes 社群廣播的嗎?在我們的每週 社群會議 以及以下管道分享您的聲音。感謝您持續的回饋和支持。