Allen Blog Allen Blog

SELF SPACE

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

向量数据搭建-个人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 参考链接


标题:向量数据搭建-个人AI能效平台
作者:jiu5
地址:http://solo.jiufog.space/articles/2025/03/07/1741312411814.html