作者 | 何淋波、李鵬、陳俊、高相林、孫健波
業界要聞
由於新冠疫情影響,外國企業、開發者到訪中國存在不確定性,加上召集演講人、贊助商及參會者所遇到的困難,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 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的技術圈。”