
作者 | 何淋波、李鵬、陳俊、高相林、孫健波
業界要聞
由于新冠疫情影響,外國企業、開發者到訪中國存在不确定性,加上召集演講人、贊助商及參會者所遇到的困難,CNCF 宣布原定于 2020 年 7 月在上海舉辦的 KubeCon + CloudNativeCon + 開源峰會取消。
同時,原計劃于 3 月 30 日 - 4 月 2 日在荷蘭阿姆斯特丹舉辦的 KubeCon + CloudNativeCon 峰會歐洲場也因疫情影響,被推遲到 2020 年 7 月或 8 月舉行。而 KubeCon + CloudNativeCon North America 2020 則将按計劃在 2020 年 11 月 17 日至 20 日在波士頓舉行。
可以基于 Kubernetes 高效地建構、訓練和部署AI應用。此次釋出中包括的核心元件如下:
- Jupyter Notebook controller: 使用者可以友善使用 Jupyter Notebook 開發工具來開發新的機器學習模型;
- TFJob and PyTorch Operator:用于模型訓練;
- kfctl:用于部署和管理 Kubeflow;
- KFServing:機器學習模型的部署和管理;
- Kubeflow UI:集中儀表闆。
阿裡雲 ACK 整合阿裡雲虛拟化、存儲、網絡和安全能力,打造雲端最佳容器化應用運作環境。Gartner 競争格局國内唯一入選,Forrester 報告國内排名第一。歡迎試用!歡迎廣大讀者前來試用!
上遊重要進展
Kubernetes
由于 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)。
給 kubelet 增加 cgroups v2 的支援。
針對 proxy connection upgrade 請求,強制采用 http1.1 協定。
Service ExternalIPs 遵守 ExternalTrafficPolicy=local 規則,進而達到保留 Client 源 IP 目的。
由于 kubelet 證書輪轉機制要求給 kubelet 傳回簽發的證書時,同時也帶上簽發者的 CA 資訊,用于解決 kube-controller-manager 和 kube-apiserver 的 CA 配置不一緻的問題。該 PR 隻解決 kube-controller-manager 這塊的問題,後續 kubelet 還需要配合修改。
目前主要從容器的 eth device 擷取容器 IP 資訊,但是針對隻使用 lo 和非 device(如: unix domain socket file)的容器目前的實作無法 cover,該 PR 利用 cni ADD 指令結果中傳回的容器 IP 資訊,而不從容器 eth device 擷取 IP 資訊。
Knative
Knative 目前輕松支援基于 HTTP 和事件驅動的容器擴縮容,但是為什麼不往前一步支援 FaaS 呢? 别急,Knative 社群已經開始計劃支援通過 Events 和 HTTP 觸發“function”。
開源項目推薦
基于 grpc 的隧道實作,用于定制 kube-apiserver 的 proxy 請求轉發。
新啟動一個容器和目标 Pod 共享 pid/network/user/ipc 命名空間的方式,在新啟動容器為目标 pod 定位問題。該工具可以以 kubectl plugin 方式運作。
本周閱讀推薦
推薦使用 kubectl-plugin 的方式往 kubectl 擴充使用者的需求和功能。
從微服務數量、導入的緊迫性以及時機等方面分析是否需要使用 Service Mesh。
本文将基于之前介紹的
基本網絡模型,進行了更深入的了解,希望給予讀者一個更廣更深的認知。
本文主要從三個方面對 Kubernetes 1.16 與 1.14 的性能進行了對比,分析了 1.16 版本和 1.14 版本的差別。
Kubernetes 1.16 版本相較于 1.14 版本有着衆多演進和增強,本文對其一一進行了解讀。
“ 阿裡巴巴雲原生 關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的技術圈。”