元原生生態週報 Vol.4:Twitter 從 Mesos 全面轉向 Kubernetes
前言
《雲原生生態週報》由阿里雲容器平臺聯合螞蟻金服共同釋出,每週一期。眾多一線社群專家與您一起“跟蹤動態,讀懂社群”,分享雲原生社群專案進展、活動釋出、精選部落格等資訊。以下是第一期雲原生生態週報的內容。
業界要聞
- Twitter 的基礎設施將從 Mesos 全面轉向 Kubernetes: 不久前 Twitter 在舊金山總部舉行了一次技術釋出會,Twitter 計算平臺(Twitter Computing Platform)產品與技術負責人正式宣佈此訊息,同時解讀了 Twitter 決策原因、方案具體技術路徑。推薦你來閱讀這篇解讀文章來知曉一二。Twitter 拋棄 Mesos,全面轉向 Kubernetes 。
- Microsoft 在 Build 大會上通過開源開發者專案進一步拓展雲端計算生態 。其中最受關注的,包括了Kubernetes-based Event Driven Autoscaling (KEDA)專案 和引發廣泛討論的Windows Terminal 。
- KEDA 專案 ,為 Kubernetes 原生的應用自動水平擴充套件器(HAP)提供了一個對接各種觸發源的介面(比如 Kafka 和 RabbitMQ),從而能夠通過這些渠道里的資訊來觸發 K8s 應用的水平擴充套件,甚至直接驅動 Azure Functions(Azure 的 FaaS 服務是可以直接對接 K8s 的)。在大力投入“雲原生”體系之後,Microsoft 堅持通過 K8s 整合自身各種雲端計算產品的戰略,初見成效,這也將是 Knative 專案遭受到的第一個挑戰。
- Windows Terminal 專案 在給 Windows 帶來更原生的 Linux 開發體驗的同時,同也宣佈了 Microsoft 計劃將 Linux 核心插入 Win10 (預計今年 6 月正式釋出)的“雄偉計劃”。這將意味著,原本“開發在 Mac、部署在雲上”的工作方式,將有可能發生重大變革:Microsoft 正在用實際行動嘗試連通開發者體驗中的最後一公里。
在現今企業伺服器 OS 市場,Windows 依然佔據半壁江山,其市場分額達 60% 之多,把 Windows 應用搬站上雲不僅僅是基礎設施的遷移,更重要的是通過 Kubernetes 等雲原生技術讓傳統的 Windows 應用架構體系升級,充分利用雲上的彈性、敏捷等能力,實現業務應用的快速迭代和交付。可以參考阿里雲專家分享“通過編排模板建立 Windows 應用 ”。
上游重要進展
Kubernetes 專案
- K8s 1.15 版本釋出時間定在 6 月 17 日,效能有望進一步大幅提升。目前,社群已經發布了 k8s 1.15.0 alpha.2 預覽版本。其中,來自 Google 的工程師與阿里雲工程師合作的 Bookmark API (#75474 ,#74074 ) 赫然在列。這個更新為 WATCH 操作添加了“書籤(Bookmark)”,使得這些海量的 WATCH 操作的建立者在重啟之後只需要對“書籤”之外的少數歷史變化進行追溯。在特定情況下,K8s APIServer 的效能會被提高 40 倍以上。
- KEP:NodeLocalDNS 特性即將 Beta(預設開啟),邊緣計算場景有望受益 。ubernetes 提供原生的 DNS 服務,通常以 Deployment 的方式部署,所以只會執行在叢集的某些節點上。這導致 Pod 會經常需要跨節點進行 DNS 解析,效率很低。在邊緣弱網路連結場景下甚至出現 DNS 解析不可用的情況。而該 KEP 則提出在每個節點以 Daemonset 方式部署本地 DNS 快取,是的當前節點上 Pod 的 DNS 解析都優先走本地的 DNS快取。
Knative 專案
- Knative 重新審視事件觸發源(Channel)的 API 語義設計 :Knative Eventing 專案本週投票確定了為每一個事件觸發源(Channel )定義單獨的 CRD 的設計,而不是像現在這樣用一個大 Provisioner 來進行描述,計劃在 0.7 版本實現該功能。不難看到,面對 KEDA 的潛在挑戰 ,Knative 專案正在重新審視如何通過事件觸發源來進一步擴張專案生態。
- Knative 正在開發 Event Registry : 通過 Event Registry,能很方便的獲知有哪些事件可以進行消費,這樣就可以對這些事件通過 Trigger 進行訂閱事件。當前功能目前進展中,該特性計劃在 0.6 版本釋出。
Istio/Envoy 專案
- Envoy 正打算提供一個 DNS filter 用於完成 DNS 名稱到叢集名的對映 。該 filter 可以通過 xDS API 來動態配置。實現這個 filter 需要依賴社群正在做的支援 UDP 協議的能力。
- Envoy 新增 TDS 協議支援執行時配置某些 feature 和引數 。通過將 runtime 對映到檔案系統的目錄樹中,以檔案的方式的來修改引數。控制平面可通過 TDS 去控制這些 runtime 引數。
- Envoy 開始制定標準明確什麼是穩定的 API 。目的是為了在今後升級 Envoy API 的時候可以做到向後相容,使得控制平面在連線 Envoy 的時候也可以做到相互相容。
Containerd 專案
- containerd 通過 fifo 來實現動態接管 containerd-shim 標準輸出。但是 containerd-shim 退出之後,containerd 服務端還保留著 fifo 的檔案具柄,會導致大量的檔案具柄洩漏。目前該問題已經得到修復。
- devicemapper snapshotter 實踐優化:containerd 建立 committed devicemapper 的時候,並不會 deactivate 這個 device,這會導致在它之上建立新的 snapshotter 時,需要掛起和恢復動作,這會讓映象下載和建立容器的速度變慢。目前該問題已經得到修復,改善了 devicemapper snapshotter 的效能。
開源專案推薦
本週推薦你關注Klusterkit 專案 。Klusterkit 是一款簡化 Kubernetes 部署的工具,特點如下:
a. 支援內網環境下的離線安裝;支援多種 CNI 外掛;支援 etcd 的備份和恢復;支援 k8s HA 部署
b. 這個專案目前包含三個工具:
- etcdadm,簡化 etcd 運維;
- nodeadm,支援安裝 kubeadm 的基礎依賴;
-
cctl,支援對接 Kubernetes 的 cluster api 簡化 k8s 叢集的 HA 部署;
c. 關於這個 K8s “部署神器”,你還可以閱讀這篇介紹參考 來做更深入的瞭解。