雲原生生態週報 Vol. 17 :Helm 3 發佈首個 beta 版本

前言

《雲原生生態週報》由阿里雲容器平臺聯合螞蟻金服共同發佈,每週一期。衆多一線社區專家與您一起“跟蹤動態,讀懂社區”,分享雲原生社區項目進展、活動發佈、精選博客等信息。以下是第十七期雲原生生態週報的內容。

業界要聞

  1. Helm 3 第一個 beta 版本 v3.0.0-beta.1 發佈,該版本的重點是完成最後的修改和重構,以及移植其他 Helm 2 特性。
    https://github.com/helm/helm/releases
  2. cilium 1.6 版本發佈,完成了最後的兩個核心需求,宣佈已經可以 100% 替換 kube-proxy。
    https://cilium.io/blog/2019/08/20/cilium-16/
    cilium 是一個基於 eBPF 實現的可用於提供容器網絡連接和負載均衡的組件,不依賴 K-V store,以下是 cilium 的性能測試結果。

3 pivotal 開源了鏡像構建和更新的 controller - kpack。
https://github.com/pivotal/kpack

上游重要進展

Kubernetes 項目

1 apiserver 對 observed requests 進行更細緻的分類, 對 requests 增加優先級。目前 apiserver 有比較簡單的機制去防止過載,例如用 max-in-flight 去限制 mutating 和 readonly 的請求,但是除了這兩類請求外,還有一些其他類型的請求可以去做不同的限制。這個 KEP 希望把 apiserver 收到的 request 按優先級等級進行分類,每個 request 分配到它對應的 concurrency pool,這樣不同優先級的請求就可以做到不同的請求上限限制。作者在 KEP 裏列舉了一些目前在 1.16 中觀察到的 requests

2 爲 HA master 增加 StorageVersion API。HA master 在 roling upgrade 時,每一個 apiserver 可能會用不同的 storage version 去 encode resource。如果集羣中有 storage version migrator,則會錯誤導致 storage migrator 升級 resource storage version 到不同的版本。增加了一個 StorageVersion API 在這種場景下會告訴 migrator,當前 HA 集羣對 storage version 未達成一致,migrator 會阻塞 migrate 的進行。

3 scheduling framework:爲 kubernetes scheduler 設計的插件式的架構,讓調度特性以插件的形式加入 scheduler(將在 1.17 進行 beta)。https://github.com/kubernetes/enhancements/issues/624 (KEP 比較早)。隨着調度特性越來越多,scheduler 的代碼越來越龐大,維護日益複雜,同時定製 scheduler 的開銷也比較大。於是社區希望將 scheduler 做成一個 scheduling framework 的架構,讓其他的調度特性以插件形式註冊到 scheduler,對調度器的拓展也更加靈活。

4 其他更新

etcd 項目

  1. mvcc: 調整默認的 compact batch 爲 1000,compact batch interval 爲 10ms。compact batch 影響 compact 的速度,過大的 compact batch 會導致 put/range 的性能下降,過小的 compact batch 又 compact 不了太多的 key。在集團內部,我們把這兩個參數設置爲可變,不同的集羣根據 qps 進行壓測調節到最優參數。
  2. raft:允許 learner 在特殊情況下進行投票。存在這樣的場景:集羣 id=1 是 learner,id=2 是 voter,id=3 是 voter,然後通過客戶端將 learner promote 成 voter,但是因爲網絡分區等原因,消息還沒傳到 learner,但是此時 id=2 的 voter 掛了,那麼 id=3 voter 則直接獲得了選舉勝利。實際上此時 learner 已經 promote 成 voter 了,還需要 id=1 的 voter 進行投票。該 PR 修復了這個場景,允許 learner 收到投票,當 learner 收到投票時,表明其他 quorum 將自己視爲一個 voter 了。

knative項目

  1. serving和eventing在功能和穩定性相對平穩後,開始進入性能優化階段,開始進行benchmark,包括
  2. eventing 將 channel和subscriptions 轉移到 messaging.knative.dev API Group。表明Channel 和 Subscription 的概念是消息的路由而不是事件的轉發,涉及到如何遷移現存業務,改動較大。

開源項目推薦

  1. microk8s,體積小,運行速度快,single-package 的 k8s 版本,適合用於做 k8s 的離線開發,IOT 和邊緣設備。
    https://github.com/ubuntu/microk8s
    microk8s 緊跟上游 k8s 的 feature,剛剛 release 了 1.16-beta,同時它包含了主流 k8s 生態的其他工具,包括 serverless(knative),service mesh(istio),monitoring(prometheus,grafana),machine learning(kubeflow)

  2. qlkube,Kubernetes 的 GraphQL API,允許你使用 graphql 與 Kubernetes api 進行交互。
    https://github.com/qlkube/qlkube?utm_sq=g5n76aa1mt
    GraphQL 是Facebook2015年開源的數據查詢規範。對於現在大多數的 RESTful API,都存在以下場景,client 需要向 server 發若干個請求才能獲得所需要查詢的內容。GraphQL 則希望讓 API 數據間以圖的形式,有關聯和層次結構進行組織。
    qlkube 是利用 kubernetes 的 openapi/swagger api specification 自動生成的 GranphQL 接口。

  3. kube-fzf,利用 kubectl 和 fzf 搭建的支持模糊搜索的命令行工具。
    https://github.com/thecasualcoder/kube-fzf
    fzf (fuzzy finder)是一個非常豐富的命令行模糊搜索器,而 kube-fzf 把兩個命令行工具結合,減少了 kubernetes 日常運維時敲的大量 kubectl get po xxx -n xxxxx 的命令複雜度。目前支持搜索 pod,tail pod container,describe pod,exec into a pod,port forward pod。

本週閱讀推薦

1.The State of State in Cloud Native Applications..在雲原生應用中,有狀態應用的狀態處理和發展過程以及未來走向。

2.How Kubernetes Could Orchestrate Machine Learning Pipelines. 在過去幾年,Apache YARN 和 Mesos 往往是 data science 類型的 job(尤其是 machine learning)首選的資源調度器,而隨着 Kubernetes 在社區的火爆,在 Kubernetes 上允許 big data 或 analytics job 的用戶越來越多。文章介紹瞭如何使用 kubeflow pipeline 進行 ML 訓練,以及 MLOps 的設計。

3.Kubernetes Web UIs in 2019. 社區有非常多 kubernetes Web UI 的項目,作者提出他自己對 kubernetes UI 的期望,並對所有開源項目做了一個總結。

4.深度解讀Helm 3: 猶抱琵琶半遮面。自去年年初開始放風Helm v3將要開始開發,就被一堆人追問到底啥時候發版本。Helm v3 在五月發佈了第一個alpha版本,如今發佈了beta版本,本文是一篇舊文解讀 Helm v3 aplha,但是絕對是一篇有助於理解 Helm V3的好文章。

5.Knative Eventing 之 Choice 介紹,從 Knative Eventing 0.8 開始,支持根據不同的過濾條件對事件進行選擇處理。通過 Choice 提供了這樣的能力。本文旨在介紹一下Choice特性。

6.Service Mesh發展趨勢(續):棋到中盤路往何方: 繼續探討ServiceMesh發展趨勢,以靈魂拷問的方式深度分析Istio的重大革新Mixer v2,Envoy支持Web Assembly的意義所在; 深入介紹Google Traffic Director對虛擬機模式的創新支持方式,以及最近圍繞SMI發生的故事。

名詞解釋:KEP - Kubernetes Enhancement Proposal, 即 Kubernetes 上游設計文檔

本週報由阿里巴巴容器平臺聯合螞蟻金服共同發佈
本週作者:墨封,衷源,敖小劍
責任編輯:木環

相關閱讀

雲原生生態週報 Vol. 16:CNCF 歸檔 rkt,容器運行時“上古”之戰老兵凋零
雲原生生態週報 Vol. 15:K8s 安全審計報告發布
雲原生生態週報 Vol. 14:K8s CVE 修復指南
雲原生生態週報 Vol. 13 | Forrester 發佈企業級容器平臺報告
雲原生生態週報 Vol. 12 |K8s 1.16 API 重大變更
雲原生生態週報 Vol. 11 | K8s 1.16 早知道
雲原生生態週報 Vol. 10 | 數據庫能否運行在 K8s 當中?
雲原生生態週報 Vol. 9 | K8s 1.15 後的性能提升
雲原生生態週報 Vol. 8 | Gartner 發佈雲原生趨勢
雲原生生態週報 Vol. 7 | Docker 再爆 CVE
雲原生生態週報 Vol. 6 | KubeCon EU 亮點彙總
雲原生生態週報 Vol. 5 | etcd 性能知多少
雲原生生態週報 Vol.4 | Twitter 從 Mesos 全面轉向 Kubernetes
雲原生生態週報 Vol. 3 | Docker Hub 遭入侵,Java 8 開始提供良好的容器支持
雲原生生態週報 Vol. 2 | Godaddy 開源 KES、CNCF 提供免費雲原生課程
雲原生生態週報 Vol. 1 | Google 發佈 Cloud Run,開源項目 Kubecost 讓 K8s 花費一目瞭然

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章