雲原生生態週報 Vol. 40:API Server 負載均衡問題被解決

前言

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

業界要聞

  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 版本有着衆多演進和增強,本文對其一一進行了解讀。

相關閱讀

雲原生生態週報 Vol. 39:Golang 1.14 發佈
雲原生生態週報 Vol. 38:Apache Flink 1.10.0 發佈
雲原生生態週報 Vol. 37:國內首個 Kubernetes SIG-Cloud-Provider 子項目揭祕
雲原生生態週報 Vol. 36:CNCF 公佈 2020 年 TOC 選舉結果
雲原生生態週報 Vol. 35:Falco 進入 CNCF Incubator 項目
雲原生生態週報 Vol. 34:VMware 完成 27 億美元的 Pivotal 收購
雲原生生態週報 Vol. 33:CNCF 宣佈 TUF 畢業
雲原生生態週報 Vol. 32:Istio 1.5 版本開發中
雲原生生態週報 Vol. 31:Kubernetes v1.17 版本解讀
雲原生生態週報 Vol. 30:Rancher 新版本默認支持 Kubernetes 1.16
雲原生生態週報 Vol. 29:Kubernetes 擬支持 Cgroup v2
雲原生生態週報 Vol. 28:Mirantis 收購 Docker 企業業務
雲原生生態週報 Vol. 27:Helm 3 發佈
雲原生生態週報 Vol. 26:2019 年容器生態統計報告發布
雲原生生態週報 Vol. 25:Canonical 開源 MicroK8
雲原生生態週報 Vol. 24:Ubuntu 19.10 發佈
雲原生生態週報 Vol. 23:全球首個開放應用模型 OAM 開源
雲原生生態週報 Vol. 22:Knative 暫時不會捐給任何基金會
雲原生生態週報 Vol. 21:Traefik 2.0 正式發佈
雲原生生態週報 Vol. 20:Kubernetes v1.16 發佈
雲原生生態週報 Vol. 19:Helm 推薦用戶轉向 V3
雲原生生態週報 Vol. 18:獨家解讀 etcd 3.4 新特性
雲原生生態週報 Vol. 17 :Helm 3 發佈首個 beta 版本
雲原生生態週報 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 花費一目瞭然

本文轉載自阿里巴巴雲原生微信公衆號(ID:Alicloudnative)。

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