雲原生生態週報 Vol.9| K8s v1.15 版本發佈

本週做者 | 衷源、心貴node

業界要聞

一、Kubernetes Release v1.15 版本發佈,新版本的兩個主題是持續性改進和可擴展性。(https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.15.md#kubernetes-v115-release-notesgit

二、Helm 這款包管理工具, 做爲業界 Kubernetes 上應用分發的事實標準,其 v3.0.0-alpha.1 正式發佈,這是 Helm 3 的第一個  Alpha 版本。 (https://github.com/helm/helm/releases/tag/v3.0.0-alpha.1github

三、Google 的 Dropout 專利生效,有效期 15 年。Dropout 是深度學習的一種基礎算法,對人工智能行業影響巨大。web

四、Rancher 2.3 Preview 發佈,經過一個簡單以及友好的界面,用戶便可使用 istio。(https://github.com/rancher/rancher/releases/tag/v2.3.0-alpha5)算法

五、Talos 發佈。Talos 是一款專門用於部署Kubernetes的操做系統。相對於 CoreOS,RancherOS 或者 LinuxKit 這些容器操做系統,Talos 更爲精簡。(https://github.com/talos-systems/talos) 六、 Google 推出深度學習容器,包括 TensorFlow 1.13,TensorFlow 2.0,PyTorch 和 R 語言容器。api

上游重要進展

Kubernetes v1.15 版本發佈

Kubernetes Release v1.15 版本,新版本的兩個主題是持續性改進和可擴展性。其中持續性改進着重於提升核心組件的可靠性和穩定性,同時修復一些遺留的問題;而可擴展性關注着重關注在 CRD 和 Webhook 的改進和優化上。咱們就這兩個主題講述一些值得關注的特性和改進。v1.15 版本的發佈意味着不只咱們能夠更加便捷的管理集羣和擴展集羣,同時新版本的集羣的穩定性更加堅固。架構

  • 可靠性和穩定性
    1. 新引入 WatchBookmark 特性。該特性能大大提升 Kube-Apiserver 的 List/Watch 性能,你們都知道,大規模集羣下各個組件的 List/Watch 會消耗 Kube-Apiserver 巨大的性能開銷,有了該特性,咱們能夠展望將來的集羣規模又能夠上升一個臺階。 (#74074@wojtek-t)
    2. Admission 默認開啓 StorageObjectInUseProtection。StorageObjectInUseProtection 能保護正在使用的 PV/PVC 被誤刪除。這對手速太快的開發和 SRE 同窗是一個很大的福音。(#74610@oomichi)
    3. 螞蟻金服在大規模實踐中,發現 Daemonset 有各類發佈和部署 Pod 被卡住的問題,螞蟻同窗對 Daemonset Controller 可能發生的一系列死鎖問題作了修復。

參考:https://github.com/kubernetes/kubernetes/pull/78974 https://github.com/kubernetes/kubernetes/pull/77773 https://github.com/kubernetes/kubernetes/pull/77208 https://github.com/kubernetes/kubernetes/pull/78170app

  • CRD 可擴展性和實用性加強負載均衡

    1. 增長 CustomResourcePublishOpenAPI 特性,新版本會使用 OpenAPI v3 schemas 作 CRD 實例的校驗,同時咱們能夠作 CRD 的Prune 和 默認值設置等,同時後續咱們可能依賴 OpenAPI 作 CRD 的 Protobuf 支持。(#77825@roycaihw)
    2. 新的 Prune 特性會默認移除 CRD 實例未知的字段,同時也不會將未知字段持久化,這會大大減小 CRD 實例未知字段帶來的干擾以及下降 CRD 的存儲開銷同時提升性能。
    3. 支持使用 OpenAPI 校驗來設置 CRD 實例的默認值。經過這種更加輕量級的方式,開發者沒必要費勁腦力和時間去再寫一個 Webhook 監聽 CRD 實例的建立去設置默認值了。(#77558@sttts)
    4. 增長 CRD Conversion Webhook 支持多版本 CRD 實例之間的轉換。以前咱們的 CRD 版本升級(好比從 v1alpha1 升級到 v1betav1) 是個頭疼的問題,使用這個功能咱們的版本轉化能完美解決(KEP)。
  • Webhook 加強less

    1. Admission Webhook 的配置增長了 ObjectSelector。從以前的只能根據 NamespaceSelector 和指定資源進行過濾,到新版本的 Webhook 能對特定的 Label 的資源實例過濾,從而大大提升了 Webhook 的執行效率。
    2. Webhook 的配置容許一個 Webhook 的調用指向一個非 443 端口的服務。Webhook 包括 Admission webhook, AuditSink webhook, CRD Conversion webhook(還包括 kube-aggregator Service 的配置)。
    3. Admission Webhook的配置容許一個 Webhook 只註冊和監聽一個版本的資源,好比咱們能夠只註冊 apps/v1 deployments 而不關心其它的 deployment 版本的資源,這樣咱們的 Webhook Server 不用隨着 API 定義的升級去強行升級。

Kube-Apiserver 性能深刻研究

  1. 大規模場景下必定要 Port 的幾個特性:
  2. 優化 Watch event 的 dispatch https://github.com/kubernetes/kubernetes/issues/73958
  3. NodeLease 功能: https://github.com/kubernetes/kubernetes/tree/master/pkg/kubelet/nodelease
  4. client-go 會把 List/Watch 超時設置爲 [5min, 10min),即在超時時間後會從新發起 List/Watch,建議 Daemenset 調整這個時間到幾十分鐘甚至數小時級別,否則 Apiserver 可能會由於大量訪問崩潰。同時,也在考慮 kubelet 是否也要修改這個值,代碼的註釋裏寫着 5min 是爲了平衡負載均衡以及接觸負載均衡設備 watch 的hang住 bug。
  5. client-go RateLimiter 加入 Wait 方法,避免在異步場景下使用 client-go 引發 goruntine 積壓:https://github.com/kubernetes/kubernetes/pull/79375
  6. Webhook 和 Adimission 支持 context-aware: https://github.com/kubernetes/kubernetes/pull/79376
  7. Kube-Apiserver 到達 IO 瓶頸時,metric 錯誤的將 IO 瓶頸錯誤歸類到 504。咱們須要將邏輯處理超時和寫 IO 超時分開:https://github.com/kubernetes/kubernetes/pull/79609

開源項目推薦

  1. Tektoncd: 雲原生時代的 Pipeline, https://github.com/tektoncd/pipeline
  2. Volcano: Kubernetes 原生的 Job 批量調度擴展 https://github.com/volcano-sh/volcano

本週閱讀推薦

《Cloud 2.0:代碼再也不爲王,Serverless 當道!》

這一篇不錯的務虛文檔,能夠從技術演進的視角去思考雲時代的技術演進。

文章連接:  https://mp.weixin.qq.com/s/QzudayLEHg0TrJtJ30f9Vg

《微服務架構之「 監控系統 」》

這篇文檔詳細且完整的描述了微服務架構下的監控系統。用戶能夠根據此文檔對微服務的解決方案進行入門級的瞭解。

文章連接:  https://mp.weixin.qq.com/s/xH1LX6iOJqKC5Y5IRsAhpQ

《雲原生應用 Kubernetes 監控與彈性實踐》

雲原生應用的設計理念已經被愈來愈多的開發者接受與承認,而 Kubernetes 作爲雲原生的標準接口實現,已經成爲了整個 stack 的中心,雲服務的能力能夠經過 Cloud Provider、CRD Controller、Operator 等等的方式從 Kubernetes 的標準接口向業務層透出。本文向你們介紹一個雲原生應用該如何在 Kubernetes 中無縫集成監控和彈性能力。

文章連接: https://yq.aliyun.com/articles/704346

相關文章
相關標籤/搜索