部署数据库服务¶
我们将了解哪些 Knative 功能?¶
- 什么是使用 Knative 服务的良好用例
最终交付成果是什么样的?¶
- 运行包含表格和一些示例数据的 PostgreSQL StatefulSet
概念学习¶
Knative 服务是 Knative 生态系统中的一项强大功能,旨在处理各种用例,尤其是在现代云原生应用程序中,它可以由 Knative Serving 控制,并实现缩放到零。以下是对何时以及为何应考虑使用 Knative 服务的扩展说明
无状态工作负载
- 定义:无状态应用程序不会在请求之间存储任何本地数据。每个请求都是独立的,不依赖于任何先前的交互。
- 用例:示例包括 Web 服务器、API 和微服务,其中状态在外部管理,例如在数据库或缓存中。
- 优点:简化了扩展和故障转移,因为任何实例都可以处理任何请求,而无需会话持久性。
事件驱动的负载
- 定义:事件驱动架构响应事件或触发器,例如 HTTP 请求、队列中的消息或数据库中的更改。
- 用例:使用 Knative 服务部署响应事件的函数,例如处理传入数据、触发工作流或与第三方 API 集成。
- 优点:高效的资源利用率,因为服务可以在不处理事件时缩放到零,从而降低成本并提高性能。
尝试在 Knative Slack 社区中询问#knative 这是否是最佳用例。
实施¶
步骤 1:应用所有配置文件¶
在本节中,我们将简单地运行一个 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
验证¶
在 https://127.0.0.1:3000 打开 UI 页面,您应该看到一些新的评论在页面底部弹出。
疑难解答
如果您看到“没有可用评论”,则表示您的数据库尚未初始化。检查数据库服务 pod 的运行状况并找出发生了什么。
下一步¶
您已成功设置数据库服务,它已准备好接收请求并存储用户评论。
接下来,我们将通过连接您创建的所有组件来完成事件驱动架构。这就是神奇的地方。