Kubernetes 1.12全新發布!新功能亮點解析
Kubernetes1.12已於今日全新發布!Kubelet證書輪換、資源配額優先順序、掛載名稱空間、對Azure的增強支援等10大亮點功能,本文為你一一解讀!

------------
Kubernetes 1.12已於今日全新發布。距離上一次1.11版本釋出三個月之隔,Kubernetes 1.12是今年的第三個主要版本。自從Kubernetes在2015年GA之後,它一直保持著每季度一次的更新頻率。
2018年Kubernetes的幾次主版本更新

無論您是使用Kubernetes的開發人員,還是負責操作叢集的管理員,都應該瞭解一下Kubernetes 1.12中的新功能和問題修復。
Kubernetes 1.12中包含38項功能。我們來看看一些亮點。
ofollow,noindex" target="_blank">https://github.com/kubernetes/ ... ne/11
Kubelet證書輪換
Kubelet證書輪換功能現已進入beta狀態。這一功能可以在當前證書到期時自動續訂金鑰和kubelet API伺服器的證書。在官方1.12文件釋出之前,您可以在此處閱讀有關此功能的測試版文件:
ping.md#kubelet-configuration" rel="nofollow,noindex" target="_blank">https://github.com/kubernetes/ ... ation
網路策略:CIDR選擇器和egress規則
有兩個以前的beta功能現在已是stable狀態:其中一個是ipBlock選擇器,它允許根據CIDR表示法中的網路地址指定ingress/egress規則。第二個則可以通過指定egress規則來過濾離開pod的流量。以下示例說明了這兩個功能的使用:

egress和ipBlock以前都是beta功能,它們已經在Kubernetes官方的網路策略文件中了:
https://kubernetes.io/docs/con ... cies/
掛載名稱空間傳播
掛載名稱空間傳播,即掛載卷 rshared ,從而容器內的任何掛載都能反映在root(= host)掛載名稱空間中,這一功能現已是stable狀態。您可以在Kubernetes卷文件中閱讀有關此功能的更多資訊:
https://kubernetes.io/docs/con ... ation
按條件建立Taint Nodes
在Kubernetes1.8中,這一功能還是早期alpha版本,現在此功能已升級為beta。啟用它的featureflag,節點控制器可以根據節點條件建立taints,並使排程器根據taints而不是條件來過濾節點。官方文件在此:
https://kubernetes.io/docs/con ... ition
具有自定義指標的水平pod自動伸縮器
雖然HPA中對自定義指標的支援一直是beta狀態,但1.12版增加了各種增強功能,例如可以根據監控管道中的可用標籤選擇指標。如果您對基於Prometheus、Sysdig或Datadog等監控系統提供的應用程式級指標自動調整pod感興趣,我建議您檢視 HPA中外部指標的設計方案:
https://github.com/kubernetes/ ... cs.md
RuntimeClass
RuntimeClass是一個新的叢集範圍的資源,“它將容器執行時屬性表示到控制平面”。換言之,它可以讓使用者通過提供PodSpec中的runtimeClass,選擇和配置(每個pod)特定容器執行時(如Docker、RKT或Virtlet)。這一功能還處於早期alpha階段,更多資訊可以參閱此處:
https://github.com/kubernetes/ ... ss.md
資源配額優先順序
資源配額讓管理員可以限制名稱空間中的資源消耗。這一功能在多個租戶(使用者/團隊)共享叢集中的可用計算和儲存資源時尤其實用。beta版的資源配額優先順序允許管理員根據pod的PriorityClass,確定配額範圍,從而調整名稱空間內的資源分配。你可以在這裡瞭解更多細節:
https://kubernetes.io/docs/con ... class
卷快照
Kubernetes 1.12中最令人的興奮的儲存功能之一,是永續性卷快照(儘管它還在alpha階段)。此功能允許使用者在任何CSI儲存提供商支援的特定時間點建立和恢復快照。此次更新添加了三個新的API資源作為此功能的一部分:
- VolumeSnapshotClass定義如何配置現有卷的快照;
- VolumeSnapshotContent表示現有快照;
- VolumeSnapshot允許使用者請求持久卷的新快照
下面是示例:

詳細資訊可檢視Github 上的1.12 文件分支:
https://github.com/kubernetes/ ... ts.md
拓撲感知動態配置
另一個與儲存相關的功能,拓撲感知動態配置。這一功能在Kubernetes 1.11中初次引入,並在1.12中被提升為beta狀態。它解決了在跨多個區域的叢集中動態配置卷的一些限制,其中單區儲存後端無法從所有節點全域性訪問。
對Azure的增強支援
在Kubernetes 1.12中,有兩項關於在Azure中執行Kubernetes的增強:
- 叢集自動伸縮
Azure 的叢集自動伸縮器支援已升級為穩定版。這將允許基於全域性資源,自動擴充套件Kubernetes叢集中的Azure節點數。
- Azure可用區支援
Kubernetes 1.12添加了Azure可用區(AZ)的alpha支援。可用區域中的節點將新增標籤 failure-domain.beta.kubernetes.io/zone=<region>-<AZ> ,併為Azure託管磁碟儲存類新增拓撲感知配置。
更 多
Kubernetes 1.12包含許多bug修復和內部元件的改進,此次Kubernetes的更新明顯側重於穩定核心以及使現有的beta功能成熟。還有就是通過向專案CI管道新增更多自動化測試來提高發布速度,包括為專案測試工具添加了arm、arm64、ppc64、s390x和Windows平臺的CI e2e一致性測試。
關於Kubernetes 1.12的完整變化列表,當然是來閱讀釋出說明啦:
https://github.com/kubernetes/ ... 12.md
Rancher作為一個開源的企業級Kubernetes管理平臺,可以統一納管所有云上、所有發行版、所有Kubernetes叢集,解決了生產環境中企業使用者可能面臨的基礎設施不同的困境。同時,Rancher簡潔直觀的介面風格及操作體驗,將大大改善Kubernetes原生UI易用性不佳以及學習曲線陡峭的問題。
對於公有云提供商託管的Kubernetes叢集,只要特定的提供商支援,Rancher就會支援託管叢集上支援Kubernetes 1.12。而對於使用RKE(Rancher Kubernetes Engine)配置的叢集,將從Rancher 2.2開始支援。