要编写示例 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 的工作原理、它如何实现所需的快速扩展以及它如何实现无服务器的功能。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。