跳到内容

部署数据库服务

image1

我们将学习哪些 Knative 功能?

  • 使用 Knative Service 的好用例是什么

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

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

概念学习

image4

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

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

image6

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

实施

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

image9

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

kubectl apply -f db-service

警告

请等待几分钟,直到一切就绪。如果您看到一些 job 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 都可用并且数据库迁移作业完成。如果您看到一些 job pod 失败并**出现错误,请不要担心**,请等到至少有一个 job 变为“**已完成**”。

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

使用以下命令获取前端服务的 IP 地址: kubectl get svc -o=jsonpath='{.status.loadBalancer.ingress[0].ip}' bookstore-frontend-svc

http://${IP} 打开 UI 页面,您应该会在页面底部看到一些新评论弹出。

故障排除

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

image2

下一步

image7

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

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

转到实现高级事件过滤

我们使用分析和 cookie 来了解网站流量。有关您使用我们网站的信息会与 Google 共享以达到此目的。了解更多。