Kubernetes 1.20正式發(fā)布
我們很高興為大家?guī)鞬ubernetes 1.20版本,2020年中的第三個、也是最后一個版本!此版本中包含42項增強功能:包括11項增強功能的穩(wěn)定版、15項增強功能的beta版以及16項增強功能的alpha版。
繼之前的擴展發(fā)布周期之后,如今1.20版本已經(jīng)恢復到正常的11周更新節(jié)奏。這是一段時間以來包含功能最為密集的版本之一,代表著Kubernetes的實際創(chuàng)新速度仍在加快。更重要的是,1.20版本中包含的增強功能alpha版數(shù)量甚至高于穩(wěn)定版,這從一個側(cè)面證明云原生生態(tài)系統(tǒng)中仍有許多值得探索的創(chuàng)新空間。
核心主題
存儲卷快照操作迎來穩(wěn)定版
此項功能提供觸發(fā)存儲卷快照操作的標準方法,并允許用戶以可移植方式在任意Kubernetes環(huán)境以及受支持的存儲程序上合并快照操作。
此外,這些Kubernetes快照原語還作為基礎(chǔ)構(gòu)建塊,可以為Kubernetes帶來開發(fā)高級企業(yè)級存儲管理功能的廣闊空間,包括應用程序或集群層級的備份解決方案。
需要注意的是,快照支持需要Kubernetes發(fā)行機構(gòu)捆綁快照控制器、快照CRD以及驗證webhook,同時在集群上部署支持快照功能的CSI驅(qū)動程序。
Kubectl Debug功能步入beta階段
Kubectl alpha debug功能在1.20版本中迎來beta階段,如今已經(jīng)更名為kubectl debug。此功能直接通過kubectl為用戶提供對常見調(diào)試工作流的支持。Beta版中,其支持的故障排查方案包括:
- 通過創(chuàng)建使用其他容器鏡像或命令的Pod副本,對啟動時發(fā)生崩潰的工作負載進行故障排查。
- 通過添加帶有調(diào)試工具的Pod新副本或臨時容器(臨時容器為一項alpha版功能,默認未啟用)對distroless容器進行故障排查。
- 通過在主機命名空間中創(chuàng)建運行容器,并由其訪問主機文件系統(tǒng)對節(jié)點進行故障排查。請注意,作為新的內(nèi)置命令,kubectl debug的優(yōu)先級超過一切名為“debug”的其他kubectl插件。你必須對受到影響的插件進行重新命名。
在1.20版本中,我們不建議大家繼續(xù)使用kubectl alpha debug,而且計劃在之后的版本中將其刪除。請更新你的腳本以使用kubectl debug。關(guān)于kubectl debug的更多詳細信息,請參閱調(diào)試當前運行的Pod。
Beta功能: API優(yōu)先級與公平性
作為1.18版本中首次引入的一項功能,API優(yōu)先級與公平性(APF)已經(jīng)在Kubernetes 1.20版本中實現(xiàn)默認啟用。這意味著kube-apiserver可以按優(yōu)先級對傳入的請求進行分類。
經(jīng)過更新的alpha功能:IPV4/IPV6
IPv4/IPv6雙棧迎來重新實現(xiàn),旨在支持用戶及社區(qū)就雙協(xié)議棧服務提出的反饋要求。這意味著我們可以將IPv4與IPv6服務集群的IP地址同時分配給單一服務,也能夠在服務中實現(xiàn)單IP棧與雙IP棧的往來切換。
通用版功能:限制進程PID以提高穩(wěn)定性
進程ID(pid)是Linux上機上的一種基礎(chǔ)資源。要避免主機穩(wěn)定性受到影響,我們需要在達到任務上限但又不觸及資源上限這兩項條件之間取得平衡點。
管理員們需要相應的機制以確保用戶Pod不會導致pid耗盡,避免主機守護程序(運行時、kubelet等)因此而停止運行。另外,更重要的是應確保在容器之間限制pid,確保它們不對節(jié)點上的其他工作負載產(chǎn)生太多影響。在一年之前實現(xiàn)默認啟用之后,SIG Node終于通過 SupportNodePidsLimit(節(jié)點到Pod PID隔離)以及SupportPodPidsLimit(按Pod限制PID)將限制進程PID以提高穩(wěn)定性功能推向通用版本。
Alpha功能:節(jié)點優(yōu)雅關(guān)閉
用戶與集群管理員都希望Pod能夠遵循預定的生命周期,當然也包括Pod終止階段。目前,在節(jié)點關(guān)閉時,Pod不會遵循預期的終止生命周期,因此無法正常終止并可能導致某些工作負載出現(xiàn)問題。GracefulNodeShutdown功能現(xiàn)已推出alpha版,用于向kubelet通知節(jié)點系統(tǒng)的關(guān)閉狀態(tài),從而在系統(tǒng)關(guān)閉期間優(yōu)雅關(guān)閉各Pod。
主要變化
棄用Dockershim
作為面向Docker的容器運行時接口(CRI),我們在1.20新版本中宣布棄用dockershim。這意味著不再對Docker提供支持,并將在后續(xù)版本中徹底刪除此項功能。但大家不必擔心,Docker所生成的鏡像遵循開放容器倡議(OCI)鏡像規(guī)范,因此仍能夠在一切兼容CRI的運行時中繼續(xù)供您的集群正常使用。Kubernetes社區(qū)已經(jīng)發(fā)布關(guān)于棄用決定的詳盡博文,其中還包含專門的常見問題解答頁面。
Exec探針超時處理
長期存在的exec探針超時bug終于得到修復(此bug可能對已經(jīng)使用修復新版本的現(xiàn)有Pod定義造成影響)。在發(fā)布修復之前,exec探針未考慮到字段timeoutSeconds。相反,探針將無限期運行,甚至超出其配置上限,直到返回結(jié)果。在本次更改之后,如果未指定值,則探針僅默認應用1秒。如果探針耗費的時間超過1秒,則現(xiàn)有Pod定義可能無法自給自足。本次修復還添加了一項名為ExecProbeTimeout的特征門,允許集群操作人員還原至先前行為;但在后續(xù)發(fā)行版中,此功能將被鎖定及刪除。要恢復先前行為,集群操作人員應將此特征門設置為false。