向量数据搭建 - 个人 AI 能效平台

1. 概述

PostgreSQL 是一个功能强大的开源关系型数据库,支持扩展插件。pgvector 是一个用于向量相似性搜索的 PostgreSQL 插件,适用于机器学习、推荐系统等场景。本文档描述了如何在 Kubernetes 中部署带有 pgvector 插件的 PostgreSQL 数据库。

2. 前提条件

在开始部署之前,请确保以下环境和工具已准备就绪:

  • Kubernetes 集群:版本 1.20 或更高。
  • kubectl:已配置并能够访问目标集群。
  • 持久化存储:已配置并可用,支持 ReadWriteOnceReadWriteMany 访问模式的存储类。

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 }}:替换为实际的存储类名称。

7.2 参考链接

  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    116 引用 • 54 回帖 • 1 关注
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    163 引用 • 310 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...