K8S 1.13 重磅發佈|全面解讀 20 個重大功能更新

技術翻譯/評論:wzqnls、FogDong、毛十三node

編輯:小君君git

來源:K8sMeetup社區github

美國時間 12 月 3 日Kubernetes 2018 年的第四個版本 Kubernetes 1.13 正式發佈。Kubernetes 1.13 是迄今爲止發佈時間最短的版本之一,只利用了 10 周的時間。這一版本繼續關注 Kubernetes 的穩定性和可擴展性。在存儲和集羣生命週期中,這一週期的三個主要特性已逐漸過渡到 GA。此版本中的顯着特徵包括:使用 kubeadm 簡化集羣管理、Container Storage Interface(CSI)、以 CoreDNS 做爲默認 DNS。web

 

在設定支持指望方面,這些穩定的變化對於用戶和運營商來講是一個重要的里程碑。此外,此版本還有一系列持續不斷的內部改進和新的 alpha 功能可供社區使用。docker

 

在 Kubernetes 1.13 版本發佈的第一時間,「K8sMeetup 中國社區」邀請了來自才雲 Caicloud 的一線研發工程師對 GitHub 權威 Release Notes 和 Kubernetes.io 版本發佈文章進行技術解讀和評論但願能爲你們使用 Kubernetes 帶來一些有益參考。api

 

  •   3 大主要特徵  

使用 kubeadm 簡化 Kubernetes 集羣管理  緩存

接觸過 Kubernetes 的人基本上都使用過 kubeadm。它是管理集羣生命週期的重要工具,從建立到配置再到升級; 如今 kubeadm 正式成爲 GA。kubeadm 是處理現有硬件上的生產集羣的引導,並以最佳實踐方式配置核心 Kubernetes 組件。安全

 

kubeadm 經過這種方式更加方便的爲新節點提供安全而簡單的鏈接流以及支持簡單的升級。這個 GA 版本值得注意的是如今已經畢業的高級功能,特別是可插拔性和可配置性。kubeadm 的做用是成爲管理員和自動化、以及更高級別系統的的工具箱,這個版本朝這個方向邁出了重要的一步。服務器

 

Container Storage Interface(CSI)進入 GA 階段  網絡

Container Storage Interface(CSI)如今已經進入 GA 階段,在 v1.9 中做爲 alpha 引入,在 v1.10 中做爲 Beta 引入。經過 CSI,Kubernetes 數據卷層變得真正可擴展。這爲第三方存儲提供商提供了一個機會,能夠編寫與 Kubernetes 相互操做的插件,而無需觸及核心代碼。該規範自己也達到了 1.0 狀態。

 

隨着 CSI 的穩定,插件的開發者們正在按照本身的節奏開發核心代碼之外的存儲插件。你能夠在 CSI 文檔中找到示例驅動程序和官方驅動程序的列表。

 

CoreDNS 是 Kubernetes 默認 DNS 服務器  

在 1.11 版本中,社區宣佈 CoreDNS 已達到基於 DNS-based 服務發現的通常可用性。在 1.13 版本中,CoreDNS 如今將 kube-dns 替換爲 Kubernetes 的默認 DNS 服務器。CoreDNS 是一個通用、權威的 DNS 服務器,提供與 Kubernetes 向後兼容但可擴展的集成。

 

CoreDNS 比之前的 DNS 服務器具備更少的移動部件,由於它是單個可執行文件和單個進程,並經過建立自定義 DNS 條目來支持靈活的用例。它利用 Go 語言來編寫,使其具備內存安全性。

 

CoreDNS 是 Kubernetes 1.13+ 版本推薦的 DNS 解決方案。該項目已將經常使用測試基礎架構切換爲默認使用 CoreDNS,社區也建議用戶進行切換。KubeDNS 仍會支持至少一個版本,可是時候開始規劃遷移了。許多 OSS 安裝工具已經進行了切換,包括 1.11 版本中的 Kubeadm。若是你使用託管解決方案,請與你的供應商聯繫,瞭解這將如何影響到你的項目。

 

  •   Release Note 20 個重要更新  

1. SIG API Machinery 

從 1.13 版本開始,SIG API Machinery 宣佈 dry-run 功能已進入 Beta 階段。

2. SIG Auth  

在這個版本中,咱們對核心 SIG Auth 領域進行了幾項重要的改進。在鑑權的範疇,咱們經過將帶標籤的節點自我更新限制列入白名單的選項,以及禁止 kubelet 刪除節點 API 對象,進一步下降 Kubelet 的權限。在身份驗證中,咱們對使用投射數據卷自動更新服務帳戶的令牌,增長了 alpha 級別的支持。

 

咱們還在 TokenReview 中開啓了受衆驗證,用以改善做用域。在審計日誌中,新的 alpha 級別的動態審計配置增長了對動態註冊 webhook 以接收審計事件流的支持。最後,咱們經過實驗驗證過的 etcd 加密來加強密碼安全性。

 

3. SIG AWS  

在 v1.13 版本中,咱們對 Kubernetes API 對象和 AWS 服務進行了更緊密的集成對接。

 

下面是三個不在項目範圍內的 alpha 特性版本:

  • AWS alpha 版本的 ALB(應用負載均衡器)集成至 Kubernetes Ingress 資源;

  • CSI 規範 0.3 的 alpha 版本集成至 AWS EBS (彈性塊存儲);

  • 用於 Cloudprovider-aws alpha 版本的二進制雲控制管理器。另外,咱們將aws-k8s-tester、kubetest 部署接口添加到了 test-infra 項目。這個插件容許咱們將 Prow 集成到上述的三個子項目中,以便爲這三個特性提供 CI 信號。CI 信號部分能夠在 [1] 進行查閱。

     

想要了解這三個 alpha 特性更詳細的版本信息,請參考如下 changelog:

  • aws-alb-ingress-controller v1.0.0 [2]

  • aws-ebs-csi-driver v0.1 [3]

  • cloudprovider-aws external v0.1.0 [4]

 

4. SIG Azure  

在 1.13 版本中,SIG Azure 專一於爲 Ultra SSD、Standard SSD、Premium Azure Files 添加額外的 Azure 磁盤支持。Azure 可用區和跨資源組節點也在 1.13 中從 Alpha 移至 Beta。

 

5. SIG Big Data  

在 1.13 的版本週期中,SIG Big Data 專一於與 Kubernetes 第三方項目集成相關的社區活動。這對 1.13 版本沒有任何的影響。

 

6. SIG CLI 

在 1.13 版本中,SIG CLI 主要致力於穩定咱們過去發佈的項目,例如服務器端打印、在 kubectl 中的支持以及完成基於服務器端運行特性的 kubectl diff [5]。咱們會繼續分離 kubectl 代碼以準備將其從主庫中抽出。最後,感謝來自社區的強大支持和反饋,咱們正設法推進新的插件機制到 Beta 階段 [6]。

 

7. SIG Cloud Provider 

在 1.13 版本中,SIG Cloud Provider 致力於穩定目前雲提供商使用的通用 API 和接口。這包括審覈 cloud provider API 中任何應該被棄用的以及在必要時須要修改的部分。另外,SIG Cloud Provider 已經開始圍繞擁有「cloud provider」的端到端測試套件進行探索性的工做,該測試套件可用於測試通用的雲提供商功能,好比節點資源和負載均衡器資源。

 

咱們還會繼續努力將目前全部存在於 k8s.io/kubernetes 的 cloud provider 提取至他們各自的倉庫中。隨着這些遷移,咱們慢慢過渡用戶使用 cloud-controller-manager,替代 kube-controller-manager。

 

8. SIG Cluster Lifecycle  

在 1.13 版的 SIG Cluster Lifecycle 中,咱們很高興的宣佈將期待已久的 kubeadm 推廣到穩定的 GA 版本,將 kubeadm 的配置 API 推廣到 v1beta1。在此版本中,SIG 專一於進一步改善集羣建立的用戶體驗,並修復許多 bug 和其餘各類改進。

 

如下是一些自 1.12 版本以來 kubeadm 的變化:

  • Kubeadm 的配置 API 目前是 v1beta1 版本。新的配置格式提供了鏡像倉庫管理、插件配置以及其餘方面的改進。咱們鼓勵 v1alpha3 的用戶使用命令 kubeadm config migrate 遷移到這個版本的配置 API,同時 v1alpha3 的版本將在 1.14中移除。v1beat1 的文檔能夠在這裏 [7] 找到;

  • Kubeadm 已經將 kubeadm alpha phase 的命令併入 kubeadm init phase 中。這意味着建立控制平面節點的命令正在集成爲 init 命令的一部分。對於尚未準備 GA 的 alpha 功能咱們仍然保留在 kubeadm alpha 中,咱們期待對它們的反饋;

  • Kubeadm init 及 kubeadm init phase 命令如今 --image-repository 的參數了,改善了對官方 kubernetes 倉庫訪問受限的狀況;

  • DynamicKubeletConfig 和 SelfHosting 功能已經從 kubeadm init 和 feature gates 中移除,並公開在 kubeadm alpha 下;

  • Kubeadm init 命令中證書如今支持 --crs--only 選項,簡化了自定義證書的建立;

  • kubeadm join --experimental-control-plane 如今會自動添加新的 etcd 成員在 local etcd 模式下,進一步簡化了配置 HA 集羣所要作的任務;

  • 對 kubeadm reset 進行了改進,包括 etcd 的清理和通知用戶 iptables 的狀態;

  • Kubeadm 命令在 yaml 文件包含未知或者重複字段時,會打印警告;

  • Kubeadm 目前適配 docker 18.09.0 以及更新的版本,可是依舊將 18.06 做爲默認的支持版本;

  • Kubeadm 會在啓動 kubelet 時自動會設置 --pod-infra-container-image 。

9. SIG IBM Cloud  

IBM Cloud SIG 專一於在 kubernetes 1.14 版本週期結束前,將 cloud provider 代碼遷移至外部的倉庫。在 SIG 會議中,咱們還確保分享 IBM Cloud 中最新 Kubernetes 開發的最新信息,例如 IBM Cloud Kubernetes 服務(IKS)中 Kubernetes  v1.12.2 的可用性。 SIG 更新在 Kubernetes 社區每週電話會議和 2018 年中國 KubeCon 上提供。

 

10. SIG Multicluster  

將 Federation v2 從 Alpha 版轉向 Beta 版一直是咱們過去一個季度努力的重點。 爲此,咱們與終端用戶合做,併成功招募了來自 IBM、Amadeus、思科等公司的 contributor。 Federation v2 提供了一套解耦 API 和可重用組件用於構建多集羣控制平面。 咱們計劃在 2018 年末開始發佈 Beta 組件。此外,咱們對集羣註冊和多集羣入口子項目進行了許多小更新。

 

 11. SIG Network  

在 1.13 中,關注重點是 IPv6,DNS 改進和一些較小的項目:CoreDNS 如今是經過全部規模 / 資源使用測試的默認集羣DNS —— Alpha 版本中提供了本地 DNS 緩存特性。 該特性部署了輕量級 DNS 緩存 Daemonset,能夠避免鏈接跟蹤,並將查詢從 UDP 轉換爲更可靠的 TCP。 PodReady++ 功能如今支持 kubectl CLI 。

 

此外,在 IPv6 的雙棧支持和 KEP 以及服務拓撲路由支持方面取得了進展。

 

12. SIG Node  

SIG Node 專一於 1.13 版本中的穩定性和性能改進。 引入了新的 alpha 功能以改進節點心跳反饋到控制平面的機制。NodeLease 功能讓節點使用 kube-node-lease namespace 中的 Lease 資源,該資源將按期更新。 先前用於心跳反饋的控制平面功能的 NodeStatus 僅在更改時更新。 這減小了在大型集羣的控制平面上的負載。 Kubelet 插件註冊機制能夠自動發現外部插件(包括 CSI 和設備插件),在此版本中已經提高爲穩定版(在 1.11 中做爲 alpha 版引入並在 1.12 中提高爲 Beta 版)。

 

13. SIG Openstack  

這次 SIG OpenStack 的主要內容是刪除項目內 provider 的工做進度。 這項工做與 SIG Cloud Provider 一塊兒完成,重點是移動 OpenStack (和其餘提供商)所依賴的內部 API ,以便保證 API 的穩定性。 此工做還包括提取項目內的 Cinder API 並將代碼重構到外部 Cinder provider 以刪除其餘 Cinder volume provider 的代碼。

 

此外,還對 SIG Cluster Lifecycle 的 Cluster API 負責的 OpenStack 驅動程序作了額外工做。對外部的 Cloud-Provider-OpenStack 代碼來講,這次 SIG 主要修復了一些 bug 和更新以匹配 Kubernetes 1.13 的開發。

 

14. SIG Scalability  

SIG Scalability 主要關注於穩定性以及延遲測試,投入編寫可擴展測試的框架(ClusterLoader v2),目標是在 2018 年末以前將全部測試遷移完成,並提供更多來擴展 Kubernetes 的可擴展性 / 更好用戶友好的 SLI / SLO。

 

15. SIG Scheduling  

SIG Scheduling 在 1.13 中主要關注於穩定性,並將一些主要功能推遲到下一版本。 但仍有兩個值得注意的變化:

  • TaintBasedEviction 已移至 Beta 版,默認狀況下將啓用。 啓用此功能後, condition taints 會自動添加到節點中,而且有須要,Pod 能夠添加 tolerations。

  • 不推薦使用 Pod critical annotation。 Pod 應使用 Pod 優先級而不是 annotation。

 

值得注意的是,kube-scheduler 將在 1.13 的配置文件中使用 apiVersion  kubescheduler.config.k8s.io/v1alpha1 而不是 componentconfig/v1alpha1。

 

16. SIG Service Catalog  

關於 Service Plan Defaults 的功能仍處於積極開發階段。 咱們將繼續改進 svcat CLI 的用戶體驗,併爲新的 Namespaced Service Broker 功能填補空白。

 

17. SIG Storage  

在過去的一年中,SIG Storage 一直致力於爲 Kubernetes 增長對容器存儲接口(CSI)的支持。 該規範最近已移至 1.0 ,而且在此以後,Kubernetes v1.13 會將 CSI 對 PersistentVolumes 的支持遷移到 GA 版本。

 

經過 CSI,Kubernetes 的數據卷層將變爲真正的可擴展化,它容許第三方存儲開發人員編寫驅動程序,使他們的存儲系統在 Kubernetes 中可用,而無需涉及核心代碼。CSI 首次在 Kubernetes v1.9 版本中做爲 alpha 版引入,並在 Kubernetes v1.10 版本中轉爲 beta 版。

 

你能夠在 CSI Documentation [8] 中找到一系列的示例及產品驅動。

 

SIG Storage 還將對 Block Volumes 的支持轉爲 Beta (在 v1.9 中做爲 alpha 版引入),並將對拓撲感知數據卷的調度升爲穩定版本(在 v1.9 中做爲 alpha 引入,並在 1.10中 升級爲 Beta )。

 

18. SIG UI  

目前開發路線圖中最重要的是遷移到最新版本的 Angular,咱們正在積極開發並即將發出新版本。此外,咱們也在持續修復 bug 並添加其餘改進。

 

19. SIG VMWare  

SIG VMware 在此版本的主要重點是移動 vSphere provider 暫存區須要的內部 API 以保證 API 的穩定性。這項工做是與 SIG Cloud Provider 一塊兒完成,包括建立一個全新的 vsphere-csi 插件來替換項目中的數據卷功能。

 

此外,還爲 SIG Cluster Lifecycle 實現的 Cluster API 提供了 vSphere provider。 而對核心項目外的 vSphere cloud provider 來講,這次 SIG 主要修復了一些 bug 和更新以匹配 Kubernetes 1.13 的開發。

 

20. SIG Windows  

SIG Windows 重點提高在 Windows 平臺上的穩定性以及對 Kubernetes 的支持。

 

  •   新版本技術評論  

 

「K8sMeetup 中國社區」特別邀請 Caicloud(才雲科技) 工程師,第一時間爲 Kubernetes 1.13 作了一個簡短評論:

Kubernetes 1.13 版本在安全性、穩定性、擴展性以及靈活性方面作了不少工做,也取得了不少成果。好比安全方面,kubernetes 下降了 kubelet 在鑑權方面的權限,增長了 TokenReview 的受衆驗證,以及經過 etcd 加密來加強信息的安全性。

 

Kubernetes 1.13 中,對各大雲服務提供商的集成與對接也是一大亮點,很大程度地提高了 kubernetes 支持對雲服務商的擴展性和靈活性。好比:集成了 kubernetes api 對象和 AWS 服務,爲 Ultra SSD、Standard SSD、Premium Azure Files 添加額外的 Azure 磁盤支持等。同時,對 cloud provider 的解耦分離也在持續進行,經過將 kubernetes 倉庫中的 cloud provider 移至各個雲服務商的倉庫,而且逐步使用 cloud-controller-manger 來替代 kube-controller-manager。

 

在其它方面 Kubernetes 也有不少重要的更新,好比:在部署方面,kubeadm 越發成熟,在集羣的部署管理過程當中,增長了許多可選配置參數,很好地解決了目前在部署過程當中的一些痛點。好比能夠選擇本身的鏡像倉庫,避免訪問官方倉庫的網絡問題;在存儲方面,將 CSI 對 PersistentVolumes 的支持遷移到 GA 版本;在網絡方面,則重點增長了 Ipv6 的雙棧支持以及將 CoreDNS 做爲默認 DNS。在各個開發者的貢獻下,Kubernetes 1.13 版本在原來的基礎上有了很大的提高。咱們(Caicloud)也會持續對它進行貢獻,歡迎關注。

 

參考文獻:

[1]https://testgrid.k8s.io/

[2]https://github.com/kubernetes-sigs/aws-alb-ingress-controller/releases/tag/v1.0.0

[3]https://github.com/kubernetes-sigs/aws-ebs-csi-driver/blob/master/CHANGELOG-0.1.md

[4]https://github.com/kubernetes/cloud-provider-aws/blob/master/changelogs/CHANGELOG-0.1.md

[5]https://kubernetes.io/docs/concepts/overview/object-management-kubectl/#how-to-create-objects

[6]https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/

[7]https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1

[8]https://kubernetes.io/docs/concepts/storage/volumes/#csi

[9]https://kubernetes.io/blog/

[10]https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.13.md#major-themes

 

  •   活動推薦  

「K8sMeetup 中國社區」 CKA 培訓歷經 428 天深度課程打磨,3 次教材迭代升級。由 CNCF 受權講師親自帶隊,在北京、上海等地已開設多場培訓,近 30 位學員成功拿到 CKA 培訓證書,考試經過率高達 96.3%!本次 CKA 培訓杭州站活動,定於 2019 年 1 月 4 - 6 日進行。

 

做爲 2019 年 CKA 杭州首場培訓,咱們將爲社區同窗送出以下福利:

福利一:你學習我買單,培訓後一個月內首位考試通關的同窗,全額退款!

福利二:報名成功後截圖小助手,前 5 名立返 1000 元培訓費,更有 2 個 G 的 Kubernetes 絕密資料免費送!

從這裏直達報名連接

 

相關文章
相關標籤/搜索