zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Knative 如何释放无服务器的力量

2023-03-14 22:31:35 时间

使用 Knative Service 部署应用程序

要编写示例 Knative 服务,您必须运行 Kubernetes 集群。如果您没有集群,您可以使用 Minikube运行本地 单节点集群。您的集群必须至少有两个 CPU 和 4GB RAM。

您还必须安装 Knative Serving 及其所需的依赖项,包括配置了 DNS 的网络层。

 在继续之前按照 官方安装说明进行操作。

这是一个article.yaml部署 Knative 服务的简单 YAML 文件(我称之为):

apiVersion : serving.knative.dev/v1
kind :服务
元数据:
 名称: knservice
 命名空间:默认
规范:
 模板:
   规范:
     容器:
       -图像: docker.io /##DOCKERHUB_NAME##/demo

##DOCKERHUB_NAME##的用户名在哪里dockerhub

例如,  docker.io/savita/demo

这是用于创建 Knative 应用程序的极简 YAML 定义。

用户和开发人员可以根据他们的独特要求添加更多属性来调整 YAML 文件。

$ kubectl apply -f article.yaml
service.serving.knative.dev / knservice created

就是这样!您现在可以kubectl像对待任何其他 Kubernetes 进程一样使用来观察可用的不同资源。

看一下服务

$ kubectl GET ksvc

名称URL LATESTCREATED LATESTREADY就绪原因
knservice的http:// knservice.default.example.com knservice-00001 knservice-00001真

 您可以查看 配置

$ kubectl 获取配置

NAME LATESTCREATED LATESTREADY READY REASON
knservice knservice-00001 knservice-00001 True

您还可以查看路线

$ kubectl获取路线

名称URL就绪原因
knservice的http:// knservice.default.example.com真

您可以查看 修订

$ kubectl get revision

NAME CONFIG NAME K8S SERVICE NAME GENERATION READY REASON ACTUAL REPLICAS DESIRED REPLICAS

knservice-00001 knservice                         1            True             1                 1

您可以看到 创建的 pod

$ kubectl get pods

NAME READY STATUS RESTARTS AGE
knservice-00001-deployment-57f695cdc6-pbtvj   2 / 2      Running     0          2m1s

缩放到零

Knative 的特性之一是,如果没有对应用程序发出请求,则将 pod 缩小到零。如果应用程序在五分钟内没有收到更多请求,就会发生这种情况。

$ kubectl get pods在默认命名空间中

找不到资源。

应用程序扩展到零个实例,不再需要任何资源。这是 Serverless 的核心原则之一:如果不需要资源,则不消耗任何资源。

从零开始扩大

一旦再次使用该应用程序(意味着请求到达该应用程序),它会立即扩展到适当数量的 pod。您可以通过使用curl 命令来查看 :

$卷曲的http:// knservice.default.example.com
你好Knative !

由于需要首先进行扩展,并且您必须至少创建一个 pod,因此在大多数情况下,请求通常会持续更长时间。成功完成后,pod 列表看起来就像以前一样:

$ kubectl get pods
NAME READY STATUS RESTARTS AGE
knservice-00001-deployment-57f695cdc6-5s55q   2 / 2      Running     0          3s

结论

Knative 拥有无服务器框架所需的所有最佳实践。对于已经使用 Kubernetes 的开发人员来说,Knative 是一个易于访问和理解的扩展解决方案。

在本文中,我详细展示了 Knative Serving 的工作原理、它如何实现所需的快速扩展以及它如何实现无服务器的功能。