跳至内容

部署数据库服务

image1

我们将了解哪些 Knative 功能?

  • 什么是使用 Knative 服务的良好用例

最终交付成果是什么样的?

  • 运行包含表格和一些示例数据的 PostgreSQL StatefulSet

概念学习

image4

Knative 服务是 Knative 生态系统中的一项强大功能,旨在处理各种用例,尤其是在现代云原生应用程序中,它可以由 Knative Serving 控制,并实现缩放到零。以下是对何时以及为何应考虑使用 Knative 服务的扩展说明

无状态工作负载
  • 定义:无状态应用程序不会在请求之间存储任何本地数据。每个请求都是独立的,不依赖于任何先前的交互。
  • 用例:示例包括 Web 服务器、API 和微服务,其中状态在外部管理,例如在数据库或缓存中。
  • 优点:简化了扩展和故障转移,因为任何实例都可以处理任何请求,而无需会话持久性。
事件驱动的负载
  • 定义:事件驱动架构响应事件或触发器,例如 HTTP 请求、队列中的消息或数据库中的更改。
  • 用例:使用 Knative 服务部署响应事件的函数,例如处理传入数据、触发工作流或与第三方 API 集成。
  • 优点:高效的资源利用率,因为服务可以在不处理事件时缩放到零,从而降低成本并提高性能。

image6

尝试在 Knative Slack 社区中询问#knative 这是否是最佳用例。

实施

步骤 1:应用所有配置文件

image9

在本节中,我们将简单地运行一个 PostgreSQL 服务。我们已经准备好了所有配置文件。只需运行以下命令即可一次性应用所有 yaml 文件。

kubectl apply -f db-service

警告

请等待几分钟,直到一切都准备就绪。如果您看到一些作业 pod 失败并出现错误,没关系。继续等待。

验证

您应该看到以下输出

configmap/sql-configmap created
secret/postgresql-secret created
persistentvolumeclaim/postgresql-pvc created
statefulset.apps/postgresql created
service/postgresql created
job.batch/postgresql-job created

等待片刻,直到所有 pod 都可用并且数据库迁移作业完成。如果您看到一些作业 pod 失败并出现错误,请不要担心,请等待至少一个作业变为“已完成”。

NAME                                  READY   STATUS    RESTARTS   AGE
bookstore-frontend-7b879ffb78-9bln6   1/1     Running   0          6h53m
camel-k-operator-7989475884-7wk6z     1/1     Running   0          5h26m
event-display-55967c745d-bxrgh        1/1     Running   0          5h26m
node-server-644795d698-r9zlr          1/1     Running   0          5h26m
postgresql-0                          1/1     Running   0          5h23m
postgresql-job-55dlv                  0/1     Completed 0          10s
postgresql-job-fnv8m                  0/1     Error     0          73s

验证

image3

https://127.0.0.1:3000 打开 UI 页面,您应该看到一些新的评论在页面底部弹出。

疑难解答

如果您看到“没有可用评论”,则表示您的数据库尚未初始化。检查数据库服务 pod 的运行状况并找出发生了什么。

image2

下一步

image7

您已成功设置数据库服务,它已准备好接收请求并存储用户评论。

接下来,我们将通过连接您创建的所有组件来完成事件驱动架构。这就是神奇的地方。

转到实施高级事件过滤

我们使用分析和 Cookie 来了解网站流量。有关您使用我们网站的信息将与 Google 共享,用于该目的。了解更多。