knative入门指南

简介: knative入门指南

尽管Knative自2018年以来一直由社区维护,但最近一直有关于该项目的传言,因为谷歌最近将Knative提交给了云原生计算基金会(CNCF),作为一个孵化项目考虑。


太酷了!但Knative到底是什么呢?


简单地说,Knative是一种简化和增强应用在Kubernetes上运行方式的技术。Knative本身运行在Kubernetes上,有两个主要组件:Knative serving和Knative eventing。这篇文章是关于Knative serving。


60.png


Kubernetes 很复杂

Knative 如何简化在 Kubernetes 上运行应用程序的过程?要理解这一点,您必须首先了解这一点:在 Kubernetes 上部署应用程序很复杂。您首先进行部署,最终管理许多 ReplicaSet(每个版本的应用程序一个),每个 ReplicaSet 运行一个或多个 pod,这是您的应用程序容器运行的地方,通常每个 pod 一个容器。


61.png


但是,您还需要创建一个服务,在集群内部公开您的应用程序(以便应用程序的其他部分可以访问它),并创建一个入口,使您的应用程序在集群之外可用(以便最终用户可以访问它)。如果你想要自动伸缩,你需要制作一个HorizontalPodAutoscaler (HPA)。您还需要将配置和机密信息与应用程序分开管理。


62.png


这需要考虑很多。对于开发人员来说,这可能是一个很高的学习门槛——他们本来应该花时间专著应用程序代码。


进入Knative介绍


63.png


使用 Knative,您只需要创建一个资源——Knative 服务——然后 Knative 会为您协调一组资源,以完成我们在上面的 Kubernetes 示例中介绍的所有内容! 此外,默认设置的方式是您可以运行您的应用程序并使用一个开箱即用的命令(或一个应用的 YAML)从外部访问它。


Knative 简化应用部署

它是如何工作的?


kn service create sunshine --image=rainbows


运行 kn service create 命令,提供您的应用程序名称、应用程序映像和任何配置(环境变量、首选端口等),Knative 将为您创建一个 Knative 服务。


64.png


Knative Service 会自动为您的 Service 创建配置和路由。 配置管理修订流,每个修订都与 Kubernetes 部署和 Knative Pod Autoscaler (KPA) 相关联。


65.png


我将暂时解释这些组件中的每一个。 但现在我想让你知道两件事:


  1. 当您运行 kn service create 命令时,会为您创建所有这些对象,并且该命令会向您返回一个 URL,您可以在其中访问正在运行的应用程序。 就这么容易。
  2. 除了支持 Knative 资源的 Kubernetes 资源外,您还可以查看、访问和操作 Kubernetes 集群中的所有这些 Knative 资源。 Knative 构建在 Kubernetes 之上,但它并没有掩盖它。

Knative 缩放为零

流量如何通过这些 Knative 抽象到达 Kubernetes 部署中正在运行的应用程序?


在这一点上,我们的系统只有一个修订版,所以它像这样移动:

66.png


流量通过 Knative Route 进入集群。 默认情况下,路由将 100% 的流量发送到最新版本,但这是可配置的,我们将在本文后面讨论。


Knative Pod Autoscaler (KPA) 正在监视 Revision 收到的请求数量,并将根据需要自动扩展 Kubernetes 部署中的 pod 数量。 (再次,我将深入研究一下这里有哪些修订)。


67.png


然后检查一下:当没有流量流向您的应用程序时,Knative 会将 pod 的数量缩放为零。 这是正确的! 与 Kubernetes 不同,您需要始终运行至少一个 pod 实例才能为应用程序提供服务,而 Knative 可以扩展到零。 然后,当客户端请求访问您的应用程序时, Knative 才开始实际运行应用程序 的Pod。 这可以节省大量用于保持整年运行应用程序的费用。


68.png


带有 Knative 修订的更整洁的发布管理

正如我之前提到的,Knative Configuration 对象管理着一个修订流。 什么是 Knative 修订版? 修订是您当前代码和配置的时间快照,包含运行该特定版本的应用程序所需的所有信息。 这与 Kubernetes 管理配置的方式不同(在我看来,更优越),与源代码分开。


您想升级您的应用程序以使用最新的容器映像吗? 砰! Knative 进行了新的修订。 现在您想更新应用程序的配置吗? 砰! 新修订。 这些修订是有序的、不可变的,并且可以无限期地持续存在。


流量拆分

使用修订管理您的版本有两个主要好处。 首先,您可以轻松地在修订之间拆分流量。 这在推出新版本时特别有用。 假设您目前有 100% 的流量流向修订版 2,并且您准备升级到更新版本,修订版 3。首先,您可以将少量流量发送到修订版 3,例如 10%。 然后您运行一些用户测试,感觉更有信心,现在将 20% 的流量发送到新应用程序。 您可以以这种方式继续,直到 100% 的流量流向修订版 3,而 0% 的流量流向修订版 2。


69.png


回滚

修订的第二个主要好处是回滚。 由于 Knative 版本代表时间快照,因此您可以跳回您喜欢的任何版本的应用程序。 如果您发现您的某个应用程序依赖项存在漏洞,您可以将流量引导回不使用该依赖项的最新版本——即使该漏洞是去年引入的并且自那时以来已经发布了 20 个版本 . 当然,使用 Kubernetes,您也可以回滚,但使用 Kubernetes,回滚可能会很复杂。 跟踪与每个版本相关的配置是一个难题,回滚超过一两个周期可能特别困难。


70.png


Knative 提供对路由和访问的细粒度控制

更重要的是,使用 Knative 的 Route 抽象,您可以设置路由以提供对完全实验性且不打算向公众公开的修订的内部访问。 你可以设置一个站点和一个内部路径来对不同的 UI 模式进行测试,或者评估一个激进的新想法的可行性。 Knative Route 组件使您可以对路由和访问进行细粒度控制。


71.png

总之,以下是 Knative Serving 的诸多好处:


  • 易于部署
  • 缩放为零
  • 流量拆分
  • 回滚
  • 路线和访问


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Kubernetes Cloud Native 容器
完全免费的K8S学习平台:在线集群环境助力你的云原生之路!
完全免费的K8S学习平台:在线集群环境助力你的云原生之路!
3866 1
|
8月前
|
Kubernetes Cloud Native Go
Kubeflow-KServe-架构学习指南
KServe是基于Kubernetes的生产级AI推理平台,支持多框架模型部署与管理。本指南从架构解析、代码结构到实战部署,系统讲解其核心组件如InferenceService、控制器模式及与Knative、Istio集成原理,并提供学习路径与贡献指南,助你快速掌握云原生AI服务技术。
1226 139
|
弹性计算 Kubernetes API
Kubernetes 驱动的 IaC,Crossplane 快速入门
Crossplane 是一个开源的 Kubernetes 扩展工具,允许用户通过声明式配置直接在 Kubernetes 中管理云资源。对于阿里云开发者,借助 Crossplane 和官方提供的 provider-upjet-alibabacloud,可以像管理 Pod 一样轻松操作 ECS 实例、VPC 和 OSS Bucket 等资源。本文介绍了 Crossplane 的核心概念,并通过快速入门指南演示了如何安装 Crossplane、配置阿里云认证并创建第一个 VPC 资源。
1334 37
|
存储 Linux 持续交付
史上最全 Terraform 入门教程,助你无坑入门!
【10月更文挑战第26天】这是一个全面的 Terraform 入门教程,涵盖了 Terraform 的基本概念、安装步骤、基础配置、变量和输出变量的使用、模块的定义与使用,以及状态管理。通过实例讲解如何创建本地文件资源和 AWS S3 桶,帮助初学者快速上手并掌握 Terraform 的核心功能。
4276 8
|
机器学习/深度学习 人工智能 自然语言处理
详解:Poe AI国内版_国内使用Poe AI的最优选择!
Poe 的出现标志着 Quora 对 AI 和自然语言处理 (NLP) 技术的深入探索,预示着 AI 在我们日常生活中将扮演越来越重要的角色。
1699 13
|
调度 Perl 容器
开源工具GPU Sharing:支持Kubernetes集群细粒度
问题背景 全球主要的容器集群服务厂商的Kubernetes服务都提供了Nvidia GPU容器调度能力,但是通常都是将一个GPU卡分配给一个容器。这可以实现比较好的隔离性,确保使用GPU的应用不会被其他应用影响;对于深度学习模型训练的场景非常适合,但是如果对于模型开发和模型预测的场景就会比较浪费。
18672 0
|
JavaScript 前端开发 C++
Nodejs 第七十四章(微服务)
Nodejs 第七十四章(微服务)
340 5
|
消息中间件 监控 NoSQL
一文读懂python分布式任务队列-celery
celery是一个简单,灵活、可靠的分布式任务执行框架,可以支持大量任务的并发执行。celery采用典型生产者和消费者模型。生产者提交任务到任务队列,众多消费者从任务队列中取任务执行【2月更文挑战第11天】
56852 5
|
Kubernetes Cloud Native Serverless
从零自建FaaS平台(1): Knative
Knative是一款基于Kubernetes的Serverless框架。其目标是制定云原生、跨平台的Serverless编排标准。Knative通过整合容器构建(或者函数)、工作负载管理(动态扩缩)以及事件模型这三者来实现的这一Serverless标准。
686 0
|
测试技术 Go 开发工具
【Go语言专栏】Go语言中的代码审查与最佳实践
【4月更文挑战第30天】Go语言因其简洁、高性能及并发能力,在云计算等领域广泛应用。代码审查对提升Go代码质量、遵循规范及团队协作至关重要。审查流程包括提交、审查、反馈、修改和合并代码。工具如GoLand、Git、ReviewBoard和GitHub提供支持。最佳实践包括遵循命名规范、添加注释、保持代码结构清晰、复用代码和确保测试覆盖。积极参与代码审查是提高质量的关键。
428 0

热门文章

最新文章