Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Knative: A Kubernetes-based platform to manage ...

Kyle Bai
September 14, 2018

Knative: A Kubernetes-based platform to manage modern serverless workloads

Kyle Bai

September 14, 2018
Tweet

More Decks by Kyle Bai

Other Decks in Technology

Transcript

  1. About Me 白凱仁(Kyle Bai) • Interested in emerging technologies. •

    COSCUP, Kubernetes Day and OpenStack Day Speaker. • OpenStack and Kubernetes Projects Contributor(100+ PR). • Certified Kubernetes Administrator. @kairen([email protected]) https://kairen.github.io/
  2. Agenda Today We would like to talk about What is

    Knative? Knative Core Concepts Live Demo Summary
  3. Knative Knative 是 Google Cloud Platform 與多家公司共同開發的開源 Serverless 架構方案︐ 目標是提供一套簡單易用的

    Serverless︐並將之標準化。目前 OpenWhisk、Riff 與 Kyma 都跟 Knative 有密切的合作。 “Developed in close partnership with Pivotal, IBM, Red Hat, and SAP, Knative pushes Kubernetes-based computing forward by providing the building blocks you need to build and deploy modern, container-based serverless applications.”
  4. Built on top of Kubernetes and Istio knative 是建立在 Kubernetes

    和 Istio 平台之上的︐使用 Kubernetes 提供的容器管理 能力(Deployment、Replicaset、和 Pods 等)︐以及 Istio 提供的網路管理功能 (Ingress、LB、Dynamic route 等)。
  5. Knative Goals Knative 類似其他 Serverless 平台透過自動化來處理以下事情︓ • 部署函式(應用程式)容器實例。 • 自動完成程式碼到容器的建構。

    • 將函式(應用程式)與特定事件進行綁定︐一但觸發事件時︐將自動觸發函式(應用程式)。 • 路由、流量控制(blue/green deployment)等網路功能。 • 函式(應用程式)能夠自動伸縮實例。
  6. Knative Core Concepts 整個 Knative 把系統拆分成三個部分來實現 Serverless 應用的管理︐而這三個部分都 會透過許多 Kubernetes

    CRD 來建立抽象資源︓ • Build: 將使用者定義的函式與應用程式 build 成容器映像檔。 • Serving: 用來設定 Request-driven compute 、應用程式路由、升級策略與 Autoscale 等等功能。 • Eventing: 用來自動完成事件的綁定與觸發。
  7. Kubernetes CRD CustomResourceDefinition(CRD) 是 v1.7+ 版本新加入的 Kubernetes API 擴展機制︐ 目標是無需修改核心程式碼就能對

    Kubernetes 進行擴展。 • 使用自定義物件進行擴展 Kubernetes API • CRDs 能夠沿用熟悉的 UX 工具︐ex: kubectl • 能夠與 Custom Controllers 進行結合 • 支援 SubResources(v1.10+)
  8. Knative Build Build 是 Knative 中的自定義資源︐並提供了 Build API object 來處理從原始碼

    (Sources)建構容器的可插拔(Pluggable)模型︐這是基於 Google 的容器建構服務 (Container Build Service) 而來︐這允許開發者定義容器的來源來打包映像檔。
  9. Knative Serving Knative Service 功能是基於 Kubernetes 和 Istio 開發的︐它使用 Kubernetes

    來管理 容器(Deployment、Pod等)︐而利用 Istio 來管理網路路由(VirtualService、 DestinationRule 等等)。 • 自動化啟動與刪除容器 • 根據 Name 產生網路存取相關的 Service、Ingress 等 • 監控函式(應用程式的請求)︐並自動伸縮實例 • 支援 blue/green deployment、Rollback 等 Workflow。
  10. Knative Serving Concepts • Route:函式(應用程式)的路由規則︐即進來的流量如何存取函式(應用程式)︐對應了 Istio 的流量管理(VirtualService 與 DestinationRoute)。 •

    Configuration: 函式(應用程式)的最新組態︐即函式(應用程式)目前期望的狀態︐對應了 Kubernetes 的容器管理(Deployment)。 • Revision: 記錄每個工作負載修改的程式碼與組態的時間點快照。 • Service: 管理整個函式(應用程式)的 Build、Route 與 Configuration 的建立流程。
  11. Knative Eventing Concepts • EventSource:事件來源︐能夠產生事件的外部系統。 • Feed:把某種類型的 EventType 和 EventSource

    和對應的 Channel 綁定在一起。 • Channel:訊息系統實的抽象層︐後端可以是 kafka、RabbitMQ、Google PubSub 作為具體 的實現。 channel name 類似於消息集群中的 topic︐可以用來解耦事件源和函數。 • Subscription:把 channel 和後端的函式綁定的一起︐一個 channel 可以綁定到多個 Knative service
  12. Summary • Knative 提供了一個 Serverless 標準化架構︐並希望透過 Kubernetes 與 Istio 來實

    現運算與網路路由的功能。 • Knative 和標準化的 FaaS 不同︐knative 期望能夠運行所有的 Workload︐如 Traditional application、Function 與 Container。 • 透過實現 Kubernetes 抽象資源來簡化管理與部署流程。 • 提供了 Logging(EFK)、Metrics(Prometheus+Grafana)、Tracing(Jaeger)的功能。 • 目前 Knative 還在迭代︐有些元件都是 Hard-coded。