Serverless on Kubernetes — Knative

Owen Wu
Nov 6, 2022

--

在眾多強者同事的幫助下;這次在 Kubernetes Summit 2022 舉辦了實戰工作坊 Serverless on Kubernetes;以 Knative 的實戰演練為主軸。在這兩天所有的Workshop中,拿到了知識性的冠軍:

Knative 在 CNCF 的 Serverless Landscape 中,一直都備受矚目。網路上可以輕易地搜尋到很多資源,但大多是 2020 時發布的資料。所以也趁這個機會來更新一下 Knative 目前的現況。

Knative 的基本元件原本有三大類;分別是 Serving,Events,Build。Knative Build 後來則由 Tekton 取代,不再是 Knative 專案的一部分。

Knative Serving 物件主要用來實作 Event Handler;當然也可以用來裝載一般常見的 Restful API。使用起來相當靈活。

Knative Serving 最常用的功能有二

  1. 如何利用Route 跟Revision 的設定 ,來控制服務版本間的流量;達成 Blue-Green deployment 類的效果。設定參考:https://gitlab.com/owensengoku/serverless-on-kubernetes/-/blob/main/knative-serving/app-v2.yaml
  2. Autoscaling 機制; 預設是使用 request concurrency 來做為判斷指標.透過簡單的設定即可實現。設定參考:https://gitlab.com/owensengoku/serverless-on-kubernetes/-/blob/main/knative-serving/autoscale-go.yaml

而 Knative Eventing 的部分:一方面使用了 CNCF 推廣的 CloudEvent 標準;一方面針對 Event 的 Broker,Subscription 都有著很好的實作,目前甚至已經支援了 Kafka 跟 Rabbitmq 的 Broker (Ref)。

在這次的實戰工作坊中,我們使用了 Events for Cloud Run for Anthos 的架構,讓 Google Cloud Storage 的 Event 可以直接觸發部署在 GKE 中的 Knative Serving;實現了一個 Serveless Event-Driven 的常見情境:圖片上傳後,進行縮圖。

這次工作坊的另外一個亮點,在於我們整合了 Knative 開源社群提供的 Prometheus 和 Grafana 的監控範例;搭配 Google Cloud Managed Service for Prometheus 。讓使用者可以一鍵部署地後,輕鬆地掌握 Knative 的整個運行狀況。設定參考:https://gitlab.com/owensengoku/serverless-on-kubernetes/-/tree/main/prometheus

整體而言, Knative 越來越趨於成熟,應該是一個可以考慮用在正式環境的方案了;但我還是希望能看到更多跟 Workflow 相關的整合,希望之後也能夠研究這方面的東西分享出來

--

--