天天看點

API Server 負載均衡問題被解決 | 雲原生生态周報 Vol. 40業界要聞上遊重要進展Kubernetes開源項目推薦本周閱讀推薦

API Server 負載均衡問題被解決 | 雲原生生态周報 Vol. 40業界要聞上遊重要進展Kubernetes開源項目推薦本周閱讀推薦

作者 | 何淋波、李鵬、陳俊、高相林、孫健波

業界要聞

  1. CNCF 宣布 2020 年中國 KubeCon 取消

由于新冠疫情影響,外國企業、開發者到訪中國存在不确定性,加上召集演講人、贊助商及參會者所遇到的困難,CNCF 宣布原定于 2020 年 7 月在上海舉辦的 KubeCon + CloudNativeCon + 開源峰會取消。

同時,原計劃于 3 月 30 日 - 4 月 2 日在荷蘭阿姆斯特丹舉辦的 KubeCon + CloudNativeCon 峰會歐洲場也因疫情影響,被推遲到 2020 年 7 月或 8 月舉行。而 KubeCon + CloudNativeCon North America 2020 則将按計劃在 2020 年 11 月 17 日至 20 日在波士頓舉行。

  1. Kubeflow 1.0 釋出

可以基于 Kubernetes 高效地建構、訓練和部署AI應用。此次釋出中包括的核心元件如下:

  • Jupyter Notebook controller: 使用者可以友善使用 Jupyter Notebook 開發工具來開發新的機器學習模型;
  • TFJob and PyTorch Operator:用于模型訓練;
  • kfctl:用于部署和管理 Kubeflow;
  • KFServing:機器學習模型的部署和管理;
  • Kubeflow UI:集中儀表闆。
  1. 阿裡雲 ACK 1.16 版本正式灰階上線

阿裡雲 ACK 整合阿裡雲虛拟化、存儲、網絡和安全能力,打造雲端最佳容器化應用運作環境。Gartner 競争格局國内唯一入選,Forrester 報告國内排名第一。歡迎試用!歡迎廣大讀者前來試用!

上遊重要進展

Kubernetes

  1. 阿裡經濟體工程師解決困擾 K8s 社群多年的 API Server 負載均衡問題

由于 API Server 和 client 是使用 HTTP2 協定連接配接,HTTP2 的多個請求都會複用底層的同一個 TCP 連接配接并且長時間不斷開。而在 API Server 發生 RollingUpdate 或者某個 API Server 執行個體重新開機時,又或者 API Server 使用 MaxSurge=Replica 方式更新後, Load Balance 沒有及時的将所有副本挂載完畢,client 能敏感的感覺到連接配接的斷開并立刻發起新的請求,這時候很容易引起較後啟動(或者較後挂載 Load Balance)的 API Server 沒有一點流量,并且可能永遠都得不到負載均衡。

螞蟻金服的同學對這個問題做了修複,增加了一種通用的 HTTP filter,API Server 機率性(建議 1/1000)的随機關閉和 Client 的連結(向 Client 發送 GOAWAY)。關閉是優雅的關閉,不會影響  API Server 和 client 正在進行中的長時間請求(如 Watch 等),但是收到 GOAWAY 之後,client 新的請求就會重建立立一個新的 TCP 連結去通路 API Server 進而能讓 Load Balance 再做一次負載均衡。

這個修複增加了通用的 HTTP filter,能輕易的 port 回老版本的 Kubernetes,其它 HTTP2 server 也有類似問題也可以快速 port 這個通用的 filter(隻依賴較新版本

golang.org/x/net package

)。

  1. add KEP for cgroups v2 support

給 kubelet 增加 cgroups v2 的支援。

  1. Disable HTTP2 while proxying a "Connection: upgrade" request

針對 proxy connection upgrade 請求,強制采用 http1.1 協定。

  1. Fix ExternalTrafficPolicy support for Service ExternalIPs

Service ExternalIPs 遵守 ExternalTrafficPolicy=local 規則,進而達到保留 Client 源 IP 目的。

  1. Allow signing controller to return intermediate certs

由于 kubelet 證書輪轉機制要求給 kubelet 傳回簽發的證書時,同時也帶上簽發者的 CA 資訊,用于解決 kube-controller-manager 和 kube-apiserver 的 CA 配置不一緻的問題。該 PR 隻解決 kube-controller-manager 這塊的問題,後續 kubelet 還需要配合修改。

  1. Use ip address from CNI output

目前主要從容器的 eth device 擷取容器 IP 資訊,但是針對隻使用 lo 和非 device(如: unix domain socket file)的容器目前的實作無法 cover,該 PR 利用 cni ADD 指令結果中傳回的容器 IP 資訊,而不從容器 eth device 擷取 IP 資訊。

Knative 

  1. Knative Functions 支援

Knative 目前輕松支援基于 HTTP 和事件驅動的容器擴縮容,但是為什麼不往前一步支援 FaaS 呢? 别急,Knative 社群已經開始計劃支援通過 Events 和 HTTP 觸發“function”。

開源項目推薦

  1. apiserver-network-proxy

基于 grpc 的隧道實作,用于定制 kube-apiserver 的 proxy 請求轉發。

  1. kubectl-debug

新啟動一個容器和目标 Pod 共享 pid/network/user/ipc 命名空間的方式,在新啟動容器為目标 pod 定位問題。該工具可以以 kubectl plugin 方式運作。

本周閱讀推薦

  1. 《Bring your ideas to the world with kubectl plugins》

推薦使用 kubectl-plugin 的方式往 kubectl 擴充使用者的需求和功能。

  1. 《When You Do (and Don’t Need) a Service Mesh》

從微服務數量、導入的緊迫性以及時機等方面分析是否需要使用 Service Mesh。

  1. 《從零開始入門 K8s | Kubernetes 網絡模型進階》

本文将基于之前介紹的

基本網絡模型

,進行了更深入的了解,希望給予讀者一個更廣更深的認知。

  1. 《Kubernetes 1.16 與 1.14 性能對比》

本文主要從三個方面對 Kubernetes 1.16 與 1.14 的性能進行了對比,分析了 1.16 版本和 1.14 版本的差別。

  1. 《Kubernetes Release Note 解讀(1.15, 1.16)》

Kubernetes 1.16 版本相較于 1.14 版本有着衆多演進和增強,本文對其一一進行了解讀。

API Server 負載均衡問題被解決 | 雲原生生态周報 Vol. 40業界要聞上遊重要進展Kubernetes開源項目推薦本周閱讀推薦
阿裡巴巴雲原生 關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的技術圈。”

繼續閱讀