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

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

Avatar for Kyle Bai Kyle Bai
September 14, 2018

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

Avatar for Kyle Bai

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。