Kubernetes 1.23:探索新邊界
今天,我們高興地宣布Kubernetes正式迎來1.23版本,也是2021年內的最后一次版本更新。
此版本包含47項增強功能:其中11項增強已經升級至穩定版,17項增強進入測試階段,19項增強迎來Alpha版,另有1項功能被棄用。
要點整理
棄用FlexVolume
FlexVolume已被棄用。現在Kubernetes確定將樹外CSI驅動程序作為默認存儲卷驅動程序編寫方式。關于更多詳細信息,請參閱說明文檔。FlexVolume驅動程序的維護者們應轉向CSI驅動程序,并幫助FlexVolume用戶完成CSI遷移。這里也提醒各位FlexVolume將工作負載轉移至CSI驅動程序。
棄用klog特定標記
為了簡化代碼庫,Kubernetes 1.23版本將棄用多個日志標記;相關實現代碼將在后續版本中逐步剔除,請用戶們結合實際需要選擇可行的替代標記解決方案。
Kubernetes發布流程中的軟件供應鏈SLSA L1級合規性
Kubernetes各發行版現可生成出處證明文件,用以描述發布流程中的各登臺(staging)與實際發布階段。現在,各工件在由一個階段轉至下一階段時會得到確切驗證。最終階段則保證Kubernetes發行版切實遵循SLSA安全框架L1級(面向軟件工件的供應鏈等級)的合規性要求。
IPv4/IPv6雙棧網絡已畢業為通用版本
IPv4/IPv6雙棧網絡現已畢業為通用版本。自1.21版本以來,Kubernetes集群就默認支持雙棧組網。在1.23版本中,我們進一步刪除了IPv6DualStack功能門。我們并不強制要求使用雙棧網絡——雖然集群中已經啟用雙棧網絡支持,但Pod與服務仍然默認為單棧。要使用雙棧網絡,你的Kubernetes節點必須具有可路由的IPv4/IPv6網絡接口、必須使用支持雙棧的CNI網絡插件、必須將Pod配置為雙棧,而且必須將服務的.spec.ipFamilyPolicy字段設置為PreferDualStack或者RequireDualStack。
- HorizontalPodAutoscaler v2畢業為通用版本
- HorizontalPodAutscaler autoscaling/v2穩定API已經在1.23中畢業為通用版本。相應的,HorizontalPodAutoscaler autoscaling/v2beta2API已被棄用。
Generic Ephemeral Volume(通用臨時存儲卷)功能畢業為通用版本
通用臨時存儲卷功能在1.23中畢業為通用版本。這項功能允許用戶將支持動態配置的一切現有存儲驅動器作為臨時存儲卷,并將存儲卷的生命周期綁定至相應Pod。此功能還支持存儲卷配置中的所有StorageClass參數以及PersistentVolumeClaims所支持的一切功能。
Skip Volume Ownership(跳過卷所有權)更改現已畢業至通用版本
這項用于配置存儲卷權限及所有權變更策略的功能已經在1.23中畢業為通用版本,可幫助用戶通過掛載時的遞歸權限變更并加快Pod啟動時間。
允許CSI驅動程序選擇加入卷所有權及權限變更的功能,現已畢業至通用版本
這項功能允許CSI驅動程序以聲明方式支持基于fsGroup的權限,現已在1.23中畢業為通用版本。
PodSecurity升級至Beta版
PodSecurity迎來Beta版。PodSecurity替換掉了已被棄用的PodSecurityPolicy準入控制器;其自身即可作為準入控制器,根據所設置實施級別中的特定命名空間標簽對命名空間內的Pod執行安全標準。在1.23版本中,Kubernetes已經默認啟用PodSecurity功能門。
Container Runtime Interface(容器運行時接口CRI)v1現為默認選項
Kubelet現在支持CRI v1 API,并將后者作為項目范圍內的默認選項。如果某容器運行時不支持v1 API,Kubernetes將回退至v1 alpha2實現。最終用戶不需要執行任何中間操作,因為v1與v1 alpha2在具體實現上沒有區別。v1alpha2有望在后續Kubernetes版本中被刪除,確保所有開發精力都將集中在v1身上。
結構化日志升級至Beta版
結構化日志已經迎來Beta版。目前,kubelet與kube-scheduler中的大部分日志信息均已完成轉換。我們鼓勵用戶嘗試JSON輸出或者使用結構化文本格式解析,并向我們提供關于潛在問題及可行解決方案的反饋意見,例如日志值中的多行字符串處理等。
面向調度器的精簡化多點插件配置機制
Kube-scheduler將為插件添加一個新的、精簡化的配置字段,允許用戶在單一位置啟用多個擴展點。這種新的multiPoint(多點)插件字段將幫助管理員簡化大部分調度程序設置。通過multiPoint啟用的插件將自動在其實現的各個獨立擴展點上完成注冊。例如,你可以同時在Score與Filter兩個擴展點上啟用同一插件。如此一來,大家不必手動編輯各個擴展點設置,即可輕松啟用和禁用該擴展點上的所有插件。而且由于并不影響大多數用戶的實際使用,所以我們決定抽象掉這些擴展點。
CSI遷移更新
CSI遷移(CSI Migration)使用相應的CSI驅動程序替換現有樹中存儲插件,例如kubernetes.io/gce-pd或者kubernetes.io/aws-ebs。如果CSI Migration正常工作,則Kubernetes最終用戶不會感受到任何區別。遷移完成之后,Kubernetes用戶也可繼續使用現有接口上全部樹中存儲插件的一切功能。
- CSI Migration功能默認開啟,但在1.23版本中其在GCE PD、AWS EBS以及Azure Disk上仍處于Beta版階段。
- 在1.23版本中,CSI Migration在Ceph RBD及Portworx上仍處于Alpha版階段。
CRD表達式語言驗證升級為Alpha版
從1.23版本開始,CRD表達式語言驗證(Expression language validation for CRD)正式進入Alpha版階段。只要大家啟用CustomResourceValidationExpressions功能門,即代表自定義資源將由通用表達式語言(CEL)規則進行驗證。
服務器端字段驗證升級為Alpha版
在1.23版本中啟用ServerSideFieldValidation功能門后,用戶將在通過包含未知或重復字段的請求發送Kubernetes對象時,收到來自服務器端的警告。與此同時,服務器將直接丟棄此前未知的字段以及除最后一個重復字段外的所有前置重復字段。
在啟用此功能門后,我們還將引入fieldValidation查詢參數,以便用戶以每條單獨請求為基礎指定服務器的相應行為。這里fieldValidation查詢參數的有效值為:
- Ignore(禁用功能門時的默認值,效果與1.23之前各版本刪除/忽略未知字段的行為相同)。
- Warn(啟用功能門時的默認值)。
- Strict(將導致包含Invalid Request錯誤的請求直接失敗)。
OpenAPI v3升級為Alpha版
從1.23版本開始,如果啟用OpenAPIV3功能門,用戶將能夠為所有Kubernetes類型請求OpenAPI v3.0規范。OpenAPI v3完全透明,并能夠支持此前OpenAPI v2發布時丟棄的一組字段,具體包括:default,nullable,oneOf,anyOf。V3還為各個Kubernetes group版本發布了特定規范(位于$cluster/openapi/v3/apis/<group>/<version> 端點)以提升性能與發現性,所有group版本均可在$cluster/openapi/v3路徑處找到。
畢業至穩定版的功能
- IPv4/IPv6雙棧支持:https://github.com/kubernetes/ ... s/563
- 跳過卷所有權變更:https://github.com/kubernetes/ ... s/695
- TTL完成后控制器:https://github.com/kubernetes/ ... s/592
- CSI 驅動程序對象中的FSGroup配置策略https://github.com/kubernetes/ ... /1682
- 通用臨時內聯存儲卷:https://github.com/kubernetes/ ... /1698
- 通過靜態分析保護秘密日志:https://github.com/kubernetes/ ... /1933
- 命名空間范圍的入口類參數:https://github.com/kubernetes/ ... /2365
- 減少Kubernetes構建維護負擔:https://github.com/kubernetes/ ... /2420
- HPA API畢業為通用版本:https://github.com/kubernetes/ ... /2702
重要變更
- API服務器請求的優先級與公平性:https://github.com/kubernetes/ ... /1040
發行說明
關于完整的發行說明信息,請參閱Kubernetes 1.23版本發行說明。
可用性
Kubernetes 1.23現已通過GitHub開放下載。要開始使用Kubernets,建議你首先觀看交互式教程或通過kind使用Docker容器“節點”運行本地Kubernetes集群。你也可以使用kubeadm輕松安裝1.23最新版本。
發行版主題與徽標
Kubernetes 1.23:探索新邊界

“探索新邊界(The Next Frontier)”主題體現出1.23版本中各項全新與漸進式增強功能,也希望整個社區的成員們能夠秉持《星際迷航》中進取號船員們不斷探索與成長的精神。
Kubernetes一直有著向《星際迷航》致敬的傳統。早在谷歌內部的醞釀時期,Kubernetes的最初代號就是Project 7,代表著《星際迷航:航海家號》中的Borg人角色7/9。“探索新邊界”也明顯延續著《星際迷航》院線電影與電視劇集一以貫之的冒險精神。
“探索新邊界”也是對我們項目SIG發布章程的重申,即“確保通過統一的社區成員小組支持漫長時間表中的發布流程。”我們攜手新加入的發布團隊成員共同發展社區,也很榮幸能成為很多新朋友們在開源領域的第一個家。
參考鏈接:https://kubernetes.io/blog/201 ... etes/
參考鏈接:https://github.com/kubernetes/ ... er.md
Kubernetes 1.23發行版的徽標繼續向《星際迷航》致敬,其中的每顆星星都代表著Kubernetes項目的一位領導者。而熟悉的進取號形象則代表著整個發行團隊的團結與力量。
新版本徽標由Rey Lejano設計完成。