Kantive 介绍
Knative 提供了一种更高层次的抽象,简化并加速了在 Kubernetes 上构建、部署和管理应用的过程。它使得开发人员能够更专注于业务逻辑的实现,而将大部分基础设施和运维工作交给 Knative 去处理,从而显著提高生产力。
组件
knative-operator 运行组件如下。
knative-operator knative-operator-58f7d7db5c-7f6r5 1/1 Running 0 6m55s
knative-operator operator-webhook-667dc67bc-qvrv4 1/1 Running 0 6m55s
knative-serving 组件如下。
knative-serving 3scale-kourier-gateway-d69fbfbd-bd8d8 1/1 Running 0 7m13s
knative-serving activator-7c6fddd698-wdlng 1/1 Running 0 7m3s
knative-serving autoscaler-8f4b876bb-kd25p 1/1 Running 0 7m17s
knative-serving autoscaler-hpa-5f7f74679c-vkc7p 1/1 Running 0 7m15s
knative-serving controller-789c896c46-tfvsv 1/1 Running 0 7m17s
knative-serving net-kourier-controller-7db578c889-7gd5l 1/1 Running 0 7m14s
knative-serving webhook-5c88b94c5-78x7m 1/1 Running 0 7m1s
knative-serving storage-version-migration-serving-serving-1.12.2-t7zvd 0/1 Completed 0 7m15s
组件 |
作用 |
Activator |
对请求排队(如果一个 Knative Service 已经缩减到零)。调用 autoscaler,将缩减到 0 的服务恢复并转发排队的请求。Activator 还可以充当请求缓冲器,处理突发流量。 |
Autoscaler |
Autoscaler 负责根据配置、指标和进入的请求来缩放 Knative 服务。 |
Controller |
管理 Knative CR 的状态。它会监视多个对象,管理依赖资源的生命周期,并更新资源状态。 |
Queue-Proxy |
Sidecar 容器,每个 Knative Service 都会注入一个。负责收集流量数据并报告给 Autoscaler,Autoscaler 根据这些数据和预设的规则来发起扩容或缩容请求。 |
Webhooks |
Knative Serving 有几个 Webhooks 负责验证和变更 Knative 资源。 |
Ingress 流量入口方案
方案 |
适用场景 |
Istio |
如果已经用了 Istio,可以选择 Istio 作为流量入口方案。 |
Contour |
如果集群中已经启用了 Contour,可以选择 Contour 作为流量入口方案。 |
Kourier |
如果在没有上述 2 种 Ingress 组件时,可以使用 Knative 基于 Envoy 实现的 Kourier Ingress 作为流量入口。 |
Autoscaler 方案对比
Autoscaler 类型 |
是否为 Knative Serving 核心部分 |
默认启用 |
Scale to Zero 支持 |
基于 CPU 的 Autoscaling 支持 |
Knative Pod Autoscaler (KPA) |
是 |
是 |
是 |
否 |
Horizontal Pod Autoscaler (HPA) |
否 |
需安装 Knative Serving 后启用 |
否 |
是 |
CRD
资源类型 |
API 名称 |
描述 |
Services |
service.serving.knative.dev |
自动管理 Workload 的整个生命周期,控制其他对象的创建,确保应用具有 Routes、Configurations 以及每次更新时的新 revision。 |
Routes |
route.serving.knative.dev |
将网络端点映射到一个或多个修订版本,支持流量分配和版本路由。 |
Configurations |
configuration.serving.knative.dev |
维护部署的期望状态,提供代码和配置之间的分离,遵循 Twelve-Factor 应用程序方法论,修改配置会创建新的 revision。 |
Revisions |
revision.serving.knative.dev |
每次对工作负载修改的时间点快照,是不可变对象,可根据流量自动扩容和缩容。 |