Skip to content

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 每次对工作负载修改的时间点快照,是不可变对象,可根据流量自动扩容和缩容。