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 init
和 kubeadm join
命令來 組態和部署 HA 控制平面。已建立一個全新的測試套件,專門用於確保這些功能在一段時間內保持穩定。
憑證管理在 1.15 版本中變得更加穩健,kubeadm 現在會在憑證過期之前(在升級時)無縫輪換所有憑證。查看 kubeadm 文件 以獲取有關如何管理憑證的資訊。
kubeadm 組態檔 API 在 1.15 版本中從 v1beta1 遷移到 v1beta2。
最後,讓我們慶祝 kubeadm 現在 擁有自己的標誌!
CSI 的持續改進
在 Kubernetes v1.15 中,SIG Storage 繼續努力 實現樹狀結構內磁碟區外掛程式遷移 到容器儲存介面 (CSI)。SIG Storage 致力於使 CSI 在功能上與樹狀結構內功能保持對等,包括調整大小、內聯磁碟區等功能。SIG Storage 在 CSI 中引入了新的 Alpha 功能,這些功能在 Kubernetes 儲存子系統中尚不存在,例如磁碟區克隆。
磁碟區克隆使用戶可以在佈建新磁碟區時將另一個 PVC 指定為「DataSource」。如果底層儲存系統支援此功能並在其 CSI 驅動程式中實作「CLONE_VOLUME」功能,則新磁碟區將成為源磁碟區的克隆。
其他值得注意的功能更新
- Kubernetes Core 中對 go modules 的支援
- 持續準備雲端供應商提取和程式碼組織。雲端供應商程式碼已移至 kubernetes/legacy-cloud-providers,以便稍後更輕鬆地移除和外部使用。
- Kubectl get 和 describe 現在可以使用擴展
- 節點現在支援 第三方監控外掛程式。
- 用於排程外掛程式的新 排程框架 現在是 Alpha 版
- ExecutionHook API 旨在觸發容器中用於不同使用案例的 hook 命令 現在是 Alpha 版。
- 繼續棄用 extensions/v1beta1、apps/v1beta1 和 apps/v1beta2 API;這些擴展將在 1.16 版本中淘汰!
查看 發行說明 以獲取值得注意的功能和修復的完整列表。
可用性
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 是否對您的團隊有所幫助?與社群分享您的故事。
生態系統更新
- Kubernetes 最近在巴塞隆納的 KubeCon + CloudNativeCon 上慶祝了其 五週年
- 認證 Kubernetes 管理員 (CKA) 考試 已成為迄今為止最受歡迎的 Linux 基金會認證之一,擁有超過 9,000 次註冊和超過 1,700 名通過並獲得認證的個人。
- 繼成功的 KubeCon + CloudNativeCon Europe 2019 之後,CNCF 宣布其擁有超過 400 名成員,年增長率為 130%。
KubeCon
全球最大的 Kubernetes 聚會 KubeCon + CloudNativeCon 即將於 2019 年 6 月 24 日至 26 日在 上海 舉行(與開放原始碼峰會同期舉辦),並於 11 月 18 日至 21 日在 聖地牙哥 舉行。這些會議將舉辦技術講座、案例研究、開發人員深入探討、沙龍等等!立即註冊!
網路研討會
加入 Kubernetes 1.15 發布團隊成員於太平洋時間 7 月 23 日上午 10 點舉行的網路研討會,以了解此版本的主要功能。在此處註冊 here。
參與其中
參與 Kubernetes 最簡單的方式是加入許多與您的興趣相符的特殊興趣小組 (SIG) 之一。有什麼想向 Kubernetes 社群廣播的嗎?在我們的每週 社群會議 以及以下管道分享您的聲音。感謝您持續的回饋和支持。
- 在 Twitter 上關注我們 @Kubernetesio 以獲取最新更新
- 加入 Discuss 上的社群討論
- 在 Slack 上加入社群
- 在 Stack Overflow 上發布問題(或回答問題)
- 分享您的 Kubernetes 故事