即將釋出的 Kubernetes 1.13 有哪些新功能?
Kubernetes 配置管理
動態審計配置(alpha)
ofollow,noindex">https://github.com/kubernetes/enhancements/issues/600
Kubernetes 審計配置功能允許使用 webhook 將審計事件轉發到遠端 API。 從 Kubernetes 1.13 版本開始,使用者可以設定動態審計後端,以支援在執行時推送 AuditSink API 物件(遠端端點)。可以使用 Falco 檢查 Kubernetes 稽核事件。
支援自定義資源的 webhook 轉換(alpha)
https://github.com/kubernetes/enhancements/issues/598
在版本 1.13 之前,可為 Resource Custome Define(RCD) 定義多個版本,只要所有版本使用相同的模式(即,如果添加了新欄位,則需要在所有版本中新增)。 現在,不同的 CRD 版本可以有不同的模式,可以定義轉換 webhook 來處理更新。
API 伺服器 dry-run(alpha 到 beta)
https://github.com/kubernetes/enhancements/issues/576
dry-run 模式可以模擬真實的 API 請求,在不修改實際狀態的情況下檢視請求是否成功(准入控制器鏈,驗證,合併衝突…),或者會發生什麼。請求響應的主體應儘可能接近非 dry-run 模式。此模式的核心功能是啟用其他使用者級功能,如kubectl diff
子命令。
kubectl diff
命令(alpha 到 beta)
https://github.com/kubernetes/enhancements/issues/491
使用 kubectl diff 命令可以預覽 kubectl apply`命令對群集所做的變更。 這個命令的功能在於方便檢視,這為叢集的 operator 的日常工作提供了很方便的操作。需要的是注意,該命令要在 API 伺服器上啟用 dry-run 功能時才能生效。
簡化 Kubernetes 叢集建立(beta 到穩定)
https://github.com/kubernetes/enhancements/issues/11
此功能涵蓋了kubeadm
的總體用例,並簡化了 Kubernetes 叢集的建立流程。該功能不是 Kubernetes 1.13 版本獨有的,但是在此版本中將有一些文件上的改進,改進的地方包括kubeadm init
使用中的不同階段,kubeadm alpha
的新子命令或者是在部署示例中包含的 CoreDNS 等。
Kubernetes 核心元件
基於 taint 的驅逐 (alpha 到 beta)
https://github.com/kubernetes/enhancements/issues/166
基於 taint 的驅逐在 Kubernetes 1.13 中將從α狀態轉變為β狀態。 當啟用此功能時(在 -feature-gates 中,設定 TaintBasedEvictions = true,),NodeController(或 kubelet)會自動新增 taint,並且禁用基於 Ready NodeCondition 從 Node 中驅逐 pod 的前一邏輯。
配置排程器對叢集節點的子集進行評分(alpha 到 beta)
https://github.com/kubernetes/enhancements/issues/593
在 Kubernetes 1.12 之前,kube-scheduler 需要檢查叢集中所有節點的可行性,然後對可行節點進行評分,選擇評分最高的節點來執行 pod。現在,可以對 Kubernetes 排程器進行配置,僅考慮一定百分比的節點,只要在配置的集合中能找到足夠的可行節點即可。 這提高了排程器在大規模叢集中的效能。
更新 kubectl 的外掛機制(alpha 到 beta)
https://github.com/kubernetes/enhancements/issues/579
kubectl
支援擴充套件新增新的子命令或覆蓋現有的子命令,支援kubectl
主要發行版中未包含的新功能和自定義功能。此儲存庫提供了一個很好的擴充套件示例。
將頻繁的 Kubelet 心跳移至 Lease API(alpha)
https://github.com/kubernetes/enhancements/issues/589
在 1.13 之前的 Kubernetes 版本中,NodeStatus 是 Node 的心跳。 此版本引入了節點租約 (node-lease),這是一種更輕量,可擴充套件性更好的心跳指示器。節點租約經常更新,而 NodeStatus 僅在出現變更或一定時間段以後才從節點報告到主節點。
硬體支援
支援第三方裝置監控外掛(alpha)
https://github.com/kubernetes/enhancements/issues/606
為了監控裝置外掛提供的資源,監控代理需要能夠發現節點上正在使用的裝置集,並獲取元資料以描述該指標應該與哪個容器相關聯。 kubelet 現在提供 RPC/">gRPC 服務(PodResources)來啟用此功能。 對“PodResources 服務”的支援仍處於 alpha 狀態。
儲存
通過持久化卷源使用原始塊裝置(alpha 到 beta)
https://github.com/kubernetes/enhancements/issues/351
預設情況下,在 Kubernetes 1.13 上啟用 BlockVolume,只需將 volumeMode 的值設定為 block 即可訪問原始塊裝置。在沒有檔案系統抽象的情況下使用原始塊裝置可允許 Kubernetes 為需要高 I / O 效能和低延遲的高效能應用程式(如資料庫)提供更好的支援。
為 FlexVolume 新增調整大小的呼叫支援,以支援類似 LVM 擴充套件的卷大小調整(alpha)
https://github.com/kubernetes/enhancements/issues/304
PVC 大小調整最初是在 Kubernetes 1.8 中引入的。 此後,一些卷外掛已經能支援此功能。1.13 版本能支援 FlexVolumes。如果你正在使用 FlexVolume 並且底層驅動程式支援該操作,現在只需更新 Kubernetes 中的 PVC 即可擴充套件 PV。
新增對 Kubernetes 樹外 CSI 卷外掛的支援(beta 到穩定版)
https://github.com/kubernetes/enhancements/issues/178
容器儲存介面 (Container Storage Interface)是將任意儲存系統暴露給 Kubernetes 容器化工作負載的規範。目前,Kubernetes 卷外掛在樹內,這意味著它們與核心 Kubernetes 二進位制檔案進行連結,編譯,構建和一起釋出。在 1.13 版本中,該功能已經穩定,並允許第三方供應商建立和分發(Kubernetes 樹外)CSI 卷外掛。
使排程器能感知 pod 內卷的拓撲約束(beta 到穩定)
https://github.com/kubernetes/enhancements/issues/490
此功能允許設定控制卷的排程位置,可以啟用本地卷繫結,還可用於將卷與特定拓撲區域耦合。該功能在之前的 Kubernetes 版本中有所體現,但在 1.13 版本中已逐漸穩定。
Kubernetes 與雲端整合
AWS ALB ingress 控制器(alpha)
https://github.com/kubernetes/enhancements/issues/629
這是一項備受歡迎的功能,只要為叢集配置了 AWS 整合憑證,就可以通過按需配置 AWS ALB 來滿足 Kubernetes ingress 資源。
亞馬遜彈性塊儲存 CSI 驅動程式(alpha)
https://github.com/kubernetes/enhancements/issues/630
亞馬遜彈性塊儲存(Amazon Elastic Block Store) CSI 驅動提供 CSI 介面來管理 EBS 卷的生命週期。驅動程式仍處於 alpha 狀態,1.12 之前的版本不支援該功能。 可以使用的基本卷操作包括:CreateVolume / DeleteVolume,ControllerPublishVolume / ControllerUnpublishVolume,NodeStageVolume / NodeUnstageVolume,NodePublishVolume / NodeUnpublishVolume 和 Volume Scheduling。
外部 AWS CCM(alpha)
https://github.com/kubernetes/enhancements/issues/631
cloud-controller-manager (雲控制器管理器,CCM)是嵌入雲控制迴圈的守護程序。雲供應商和 Kubernetes 的開發和釋出速度不同,將特定於雲供應商的程式碼抽象為雲控制器管理器二進位制檔案能夠讓雲供應商獨立發展。AWS 雲控制器管理器在 Kubernetes 1.13 版本中首次亮相。
Azure 可用區(alpha 到 beta)
https://github.com/kubernetes/enhancements/issues/586
Kubernetes 1.12 版本增加了對 Azure 可用區(AZ)的支援。 可用區中的節點可通過failure-domain.beta.kubernetes.io/zone=<region> - <AZ>
標籤新增,併為 Azure 託管的磁碟儲存類新增拓撲感知配置。此版本中對 Azure 可用區的支援已經從 alpha 階段到了 beta 階段。
支援 Azure 跨資源組節點(alpha 到 beta)
https://github.com/kubernetes/enhancements/issues/604
Kubernetes 1.12 版本增加了對 Azure 序中的跨資源組(resource group)節點和非託管(例如本地)節點的支援。該版本中對跨越資源組節點的支援已經從 alpha 階段到了 beta 階段。
棄用
刪除對 etcd2 的支援
https://github.com/kubernetes/enhancements/issues/622
此版本中刪除了所有對 etcd2 的文件引用和支援。
參考連結: