PostgreSQL 是一个功能强大的开源关系型数据库,支持扩展插件。pgvector 是一个用于向量相似性搜索的 PostgreSQL 插件,适用于机器学习、推荐系统等场景。本文档描述了如何在 Kubernetes 中部署带有 pgvector 插件的 PostgreSQL 数据库。
在开始部署之前,请确保以下环境和工具已准备就绪:
ReadWriteOnce
或 ReadWriteMany
访问模式的存储类。将以下 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 # 根据实际需求调整存储大小
如果 dev
Namespace 尚未创建,请先创建:
kubectl create namespace dev
使用 kubectl
部署 PostgreSQL:
kubectl apply -f pgsql.yaml
kubectl apply -f pgsql-pvc.yaml
检查 Deployment、Service 和 PVC 是否成功创建:
kubectl -n dev get deployment,service,pvc
确保 Pod 已成功启动并处于 Running
状态:
kubectl -n dev get pods
使用以下命令连接到 PostgreSQL 数据库:
kubectl -n dev exec -it <postgresql-pod-name> -- psql -U postgres
在 PostgreSQL 中验证 pgvector 插件是否已启用:
CREATE EXTENSION vector;
SELECT * FROM pg_extension WHERE extname = 'vector';
根据需要调整 Deployment 的副本数:
kubectl -n dev scale deployment postgresql-deployment --replicas=2
建议定期备份 PostgreSQL 数据。可以使用以下命令进行备份:
kubectl -n dev exec -it <postgresql-pod-name> -- pg_dumpall -U postgres > backup.sql
建议配置 Prometheus 和 Grafana 对 PostgreSQL 进行监控,重点关注以下指标:
kubectl logs
查看 Pod 日志以获取更多信息。CREATE EXTENSION vector;
以下是需要用户根据实际情况替换的内容:
{{ YOUR_POSTGRES_PASSWORD }}
:替换为实际的 PostgreSQL 密码。{{ YOUR_STORAGE_CLASS }}
:替换为实际的存储类名称。