Krustlet:使用 Rust 開發的 kubelet,用於運行 WASM 工作負載

雲棲號資訊:【點擊查看更多行業資訊
在這裏您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

Deis Labs 發佈了 Krustlet ,一個用 Rust 開發的開源 Kubernetes kubelet,用於在 Kubernetes 中運行 WebAssembly 工作負載。在某種程度上,Krustlet 的初始版本是一種概念驗證,因爲它還不支持 Pod 事件或 Init 容器等特性。應用程序必須實現 WebAssembly 系統接口(WASI),因爲 Krustlet 只支持 WebAssembly 容器。

WebAssembly,也稱爲 WASM,是一種二進制格式,用於棧式虛擬機。它對執行速度進行了優化,佔用空間小,也是一種開放的 Web 標準。WASM 以其在瀏覽器方面的應用 (如微軟的 Blazor 框架) 而聞名,不過 Mozilla 最近推出了 WASI ,這樣就可以讓編譯器以這個接口作爲編譯目標,而不是操作系統。在服務器端支持 WASM 爲用戶提供了另一種 Docker 之外的容器運行時選擇,而這就是 Krustlet 所提供的。
此外,Lin Clark 在 Mozilla 博客上解釋說,從安全的角度來看,“如果調用一個需要訪問文件的函數,必須傳入一個帶有權限限制的文件描述符”。WASI 可用於構建只有顯式權限的沙箱環境,從而提高了容器的安全性。

d6f097bc40186b29e45b55c46d91652b

圖片來源: Standardizing WASI: A system interface to run WebAssembly outside the web .
Krustlet 的初始版本支持基本的 Pod 生命週期、用於露出 Pod 或容器字段的 API 、環境變量和宿主卷、secrets 或 configMaps。不過,Kurstlet 還沒有準備好投入生產使用。例如,Krustlet 不支持 ARM 處理器、Init 容器、雲提供商數據卷、Pod 事件、Pod Condition,並且只支持部分在 Windows 上運行。此外,Krustlet 通過提供程序與給定的運行時發生交互,支持 waSCC 和 WASI (支持的 WASM運行時在不斷增加)。

實際上,Kubelet 是使用 Rust 實現的一種 Kubernetes kubelet。它監聽 Kubernetes API,以獲取新的 Pod 請求(在集羣中運行基於 WASI 的應用程序),只要請求事件與節點選擇器是匹配的。因此,要在 Krustlet 節點上運行應用程序,用戶可以使用 taints、tolerations 和節點選擇器。此外,用戶必須爲應用程序生成 WebAssembly 二進制文件。如果應用程序是用 C 語言開發的,就用 clang ,如果應用程序是用 Rust 開發的,就用 cargo 。然後,用戶必須使用 wasm-to-oci 打包,並將容器鏡像推送到容器註冊中心。要部署應用程序,用戶需要定義一個 Kubernetes 清單,其中包含 tolerations,如下所示:

apiVersion: v1
kind: Pod
metadata:
  name: wasm-app
spec:
  containers:
    - name: wasm-app
      image: registry/wasm-app:v1.0.0
  tolerations:
    - key: "krustlet/arch"
      operator: "Equal"
      value: "wasm32-wasi"
      effect: "NoExecute"

一個構建、推送和部署應用程序到 Kurstlet 節點的典型工作流如下:

clang main.c -o demo.wasm
wasm-to-oci push demo.wasm registry/wasm-app:v1.0.0
kubectl apply -f wasm-app.yaml

對於想要在現有 Kubernetes 集羣中使用 Krustlet 的人,該項目爲他們提供了指南,包括如何在不同集羣部署 (如 Azure Kubernetes Service(AKS)、Amazon Elastic Kubernetes Service(EKS)、MicroK8s、Minikube 等) 中啓動工作節點。

Krustlet 的開發非常活躍,每個版本都有一個完整的問題列表,他們計劃接下來解決這些問題。例如,Krustlet 的最新版本是 v0.3.0 ,在這個版本中,用戶可以看到有哪些新特性、接下來會有什麼以及他們計劃修復的已知問題列表。對於即將發佈的版本,Krustlet 正在努力爲網絡、雲存儲卷提供程序和一些 Pod Condition 等提供支持。

【雲棲號在線課堂】每天都有產品技術專家分享!
課程地址:https://yqh.aliyun.com/zhibo

立即加入社羣,與專家面對面,及時瞭解課程最新動態!
【雲棲號在線課堂 社羣】https://c.tb.cn/F3.Z8gvnK

原文發佈時間:2020-07-14
本文作者:Christian Melendez
本文來自:“InfoQ”,瞭解相關信息可以關注“InfoQ

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