1. 概述
PostgreSQL 是一个功能强大的开源关系型数据库,支持扩展插件。pgvector 是一个用于向量相似性搜索的 PostgreSQL 插件,适用于机器学习、推荐系统等场景。本文档描述了如何在 Kubernetes 中部署带有 pgvector 插件的 PostgreSQL 数据库。
2. 前提条件
在开始部署之前,请确保以下环境和工具已准备就绪:
- Kubernetes 集群:版本 1.20 或更高。
- kubectl:已配置并能够访问目标集群。
- 持久化存储:已配置并可用,支持
ReadWriteOnce
或ReadWriteMany
访问模式的存储类。
3. 部署步骤
3.1 准备 Manifest 文件
将以下 Manifest 文件保存到本地,并根据实际情况替换 {{ }}
中的内容。
pgsql.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgresql-deployment
namespace: dev
spec:
strategy:
type: Recreate
selector:
matchLabels:
app: postgresql
template:
metadata:
labels:
app: postgresql
spec:
containers:
- image: pgvector/pgvector:pg16 # 使用 pgvector 插件的 PostgreSQL 镜像
name: postgresql
env:
- name: POSTGRES_PASSWORD
value: "{{ YOUR_POSTGRES_PASSWORD }}" # 替换为实际的 PostgreSQL 密码
ports:
- containerPort: 5432
name: postgresql
volumeMounts:
- name: postgresql-persistent-storage
mountPath: /var/lib/postgresql/data
volumes:
- name: postgresql-persistent-storage
persistentVolumeClaim:
claimName: postgresql-pv-claim
---
apiVersion: v1
kind: Service
metadata:
name: postgresql-client-service
namespace: dev
labels:
app: postgresql
spec:
type: ClusterIP
ports:
- port: 5432
targetPort: 5432
protocol: TCP
selector:
app: postgresql
pgsql-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgresql-pv-claim
namespace: dev
spec:
storageClassName: "{{ YOUR_STORAGE_CLASS }}" # 替换为实际的存储类名称
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi # 根据实际需求调整存储大小
3.2 创建 Namespace
如果 dev
Namespace 尚未创建,请先创建:
kubectl create namespace dev
3.3 部署 PostgreSQL
使用 kubectl
部署 PostgreSQL:
kubectl apply -f pgsql.yaml
kubectl apply -f pgsql-pvc.yaml
3.4 验证部署
检查 Deployment、Service 和 PVC 是否成功创建:
kubectl -n dev get deployment,service,pvc
4. 验证部署
4.1 检查 Pod 状态
确保 Pod 已成功启动并处于 Running
状态:
kubectl -n dev get pods
4.2 连接到数据库
使用以下命令连接到 PostgreSQL 数据库:
kubectl -n dev exec -it <postgresql-pod-name> -- psql -U postgres
4.3 验证 pgvector 插件
在 PostgreSQL 中验证 pgvector 插件是否已启用:
CREATE EXTENSION vector;
SELECT * FROM pg_extension WHERE extname = 'vector';
5. 维护和监控
5.1 扩缩容
根据需要调整 Deployment 的副本数:
kubectl -n dev scale deployment postgresql-deployment --replicas=2
5.2 备份和恢复
建议定期备份 PostgreSQL 数据。可以使用以下命令进行备份:
kubectl -n dev exec -it <postgresql-pod-name> -- pg_dumpall -U postgres > backup.sql
5.3 监控
建议配置 Prometheus 和 Grafana 对 PostgreSQL 进行监控,重点关注以下指标:
- 数据库连接数。
- 存储使用情况。
- 查询性能。
6. 故障排除
6.1 Pod 无法启动
- 检查镜像:确保镜像名称和版本正确。
- 检查持久化存储:确保 PVC 已成功绑定到 PV。
- 查看日志:通过
kubectl logs
查看 Pod 日志以获取更多信息。
6.2 数据库连接失败
- 检查 Service:确保 Service 的端口配置与 Pod 一致。
- 检查网络策略:确保没有网络策略阻止流量。
6.3 pgvector 插件未启用
- 检查插件安装:确保 PostgreSQL 镜像已包含 pgvector 插件。
- 手动安装插件:如果插件未启用,可以手动安装:
CREATE EXTENSION vector;
7. 附录
7.1 需要用户替换的内容
以下是需要用户根据实际情况替换的内容:
{{ YOUR_POSTGRES_PASSWORD }}
:替换为实际的 PostgreSQL 密码。{{ YOUR_STORAGE_CLASS }}
:替换为实际的存储类名称。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于