如何在Kubernetes上部署PostgreSQL(详细分步指南)

Kubernetes部署PostgreSQL教程介绍PostgreSQL是一个可靠且健壮的关系数据库系统,具有符合 ACID 的事务。它旨在处理各种规模的工作负载,非常适合个人使用和大规模部署,例如数据仓库、大数据服务器或 Web 服务。
在 Kubernetes 上部署 PostgreSQL 会创建一个可扩展且可移植的 PostgreSQL 实例,利用 RDBMS 和编排平台的优点。
如何在Kubernetes上部署PostgreSQL?本文将向你展示在 Kubernetes 上部署 PostgreSQL 的两种方法 - 使用 Helm 图表或手动创建配置。
先决条件

  • 安装了kubectl的 Kubernetes 集群
  • 安装了 Helm 3
  • 系统上的管理权限
使用 Helm 部署 PostgreSQLKubernetes如何部署PostgreSQL?Helm为你提供了一种在集群上部署 PostgreSQL 实例的快速简便的方法。
第 1 步:添加 Helm 存储库
1. 在Artifact Hub 中搜索你要使用的 PostgreSQL  Helm 图表。通过键入以下内容将图表的存储库添加到本地 Helm 安装:
helm repo add [ repository-name] [ repository-address]

本文使用 Bitnami Helm chart 进行 PostgreSQL 安装。
如何在Kubernetes上部署PostgreSQL(详细分步指南)

文章图片
【如何在Kubernetes上部署PostgreSQL(详细分步指南)】2. 添加存储库后,更新本地存储库。
helm repo update

系统确认更新成功。
如何在Kubernetes上部署PostgreSQL(详细分步指南)

文章图片
步骤 2:创建和应用持久存储卷
如何在Kubernetes上部署PostgreSQL?Postgres 数据库中的数据需要在 pod 重启后保持不变。
1. 为此,请使用文本编辑器(例如 nano)在YAML文件中创建PersistentVolume 资源。
nano postgres-pv.yaml

文件内容定义:
  • 资源本身。
  • 存储类。
  • 分配的存储量。
  • 访问模式。
  • 主机系统上的挂载路径。
本示例使用以下配置:
apiVersion: v1 kind: PersistentVolume metadata: name: postgresql-pv labels: type: local spec: storageClassName: manual capacity: storage: 10Gi accessModes: - ReadWriteOnce hostPath: path: "/mnt/data"

2. 保存文件并退出。然后应用配置kubectl
kubectl apply -f postgres-pv.yaml

系统确认持久卷的创建。
如何在Kubernetes上部署PostgreSQL(详细分步指南)

文章图片
步骤 3:创建并应用持久卷声明
1. Kubernetes部署PostgreSQL教程:创建持久卷声明 (PVC) 以请求在上一步中分配的存储。
nano postgres-pvc.yaml

该示例使用以下配置:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: postgresql-pv-claim spec: storageClassName: manual accessModes: - ReadWriteOnce resources: requests: storage: 10Gi

2. 保存文件并退出。应用配置kubectl
kubectl apply -f postgres-pvc.yaml

系统确认成功创建 PVC。
如何在Kubernetes上部署PostgreSQL(详细分步指南)

文章图片
3.kubectl get用于检查PVC是否连接到PV成功:
kubectl get pvc

状态列显示声明为Bound。
如何在Kubernetes上部署PostgreSQL(详细分步指南)

文章图片
第 4 步:安装 Helm Chart
使用helm install命令安装舵图。--set向命令添加标志以将安装连接到你创建的 PVC 并启用卷权限:
helm install [ release-name] [ repo-name] --set persistence.existingClaim=[ pvc-name] --set volumePermissions.enabled=true

安装成功后系统会显示报告。
如何在Kubernetes上部署PostgreSQL(详细分步指南)

文章图片
步骤 5:连接到 PostgreSQL 客户端
1、如何在Kubernetes上部署PostgreSQL?导出POSTGRES_PASSWORD环境变量即可登录PostgreSQL实例:
export POSTGRES_PASSWORD=$(kubectl get secret --namespace default psql-test-postgresql -o jsonpath="{.data.postgresql-password}" | base64 --decode)

2. 打开另一个终端窗口并输入以下命令来转发 Postgres 端口:
kubectl port-forward --namespace default svc/psql-test-postgresql 5432:5432

系统开始处理端口连接。
如何在Kubernetes上部署PostgreSQL(详细分步指南)

文章图片
3. 最小化端口转发窗口并返回上一个。输入命令连接到 psql,一个 PostgreSQL 客户端:
PGPASSWORD="$POSTGRES_PASSWORD" psql --host 127.0.0.1 -U postgres -d postgres -p 5432

注意:如果没有psql,使用apt安装:
sudo apt 安装 postgresql-client-12

psql 命令提示符出现,而PostgreSQL是准备好接受你的输入。
如何在Kubernetes上部署PostgreSQL(详细分步指南)

文章图片
通过从头开始创建配置来部署 PostgreSQLKubernetes如何部署PostgreSQL?在 Kubernetes 上手动配置 Postgres 允许你微调你的部署配置。
步骤 1:创建并应用 ConfigMap
该ConfigMap资源包含一个在部署过程中使用的数据。
1. 在文本编辑器中创建一个 ConfigMap YAML 文件。
nano postgres-configmap.yaml

2. 文件中最重要的部分是数据部分,你可以在其中提供数据库名称、用户名和登录 PostgreSQL 实例的密码。
该示例在 ConfigMap 文件中使用以下参数。
apiVersion: v1 kind: ConfigMap metadata: name: postgres-config labels: app: postgres data: POSTGRES_DB: postgresdb POSTGRES_USER: admin POSTGRES_PASSWORD: test123

3. 保存文件并退出。然后应用资源kubectl
kubectl apply -f postgres-configmap.yaml

系统确认配置文件创建成功。
如何在Kubernetes上部署PostgreSQL(详细分步指南)

文章图片
步骤 2:创建和应用持久存储卷和持久卷声明
1. Kubernetes如何部署PostgreSQL?为存储配置创建一个 YAML 文件。
nano postgres-storage.yaml

2. Helm chart 部署方法为Persistent Volume和 Persistent Volume Claim使用了两个单独的文件,但你也可以将两个配置放在一个文件中,如下例所示。
kind: PersistentVolume apiVersion: v1 metadata: name: postgres-pv-volume labels: type: local app: postgres spec: storageClassName: manual capacity: storage: 5Gi accessModes: - ReadWriteMany hostPath: path: "/mnt/data" --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: postgres-pv-claim labels: app: postgres spec: storageClassName: manual accessModes: - ReadWriteMany resources: requests: storage: 5Gi

3. 保存文件并退出。应用资源kubectl
kubectl apply -f postgres-storage.yaml

系统确认成功创建 PV 和 PVC。
如何在Kubernetes上部署PostgreSQL(详细分步指南)

文章图片
4. 使用以下命令检查 PVC 是否连接到 PV:
kubectl get pvc

PVC 的状态为Bound,并且 PVC 已准备好用于 PostgreSQL 部署。
如何在Kubernetes上部署PostgreSQL(详细分步指南)

文章图片
步骤 3:创建并应用 PostgreSQL 部署
1. Kubernetes部署PostgreSQL教程:创建部署 YAML 文件。
nano postgres-deployment.yaml

2. 部署文件包含 PostgreSQL 部署的配置,并提供容器和卷的规范:
apiVersion: apps/v1 kind: Deployment metadata: name: postgres spec: replicas: 1 selector: matchLabels: app: postgres template: metadata: labels: app: postgres spec: containers: - name: postgres image: postgres:10.1 imagePullPolicy: "IfNotPresent" ports: - containerPort: 5432 envFrom: - configMapRef: name: postgres-config volumeMounts: - mountPath: /var/lib/postgresql/data name: postgredb volumes: - name: postgredb persistentVolumeClaim: claimName: postgres-pv-claim

3. 保存文件并退出。应用部署kubectl
kubectl apply -f postgres-deployment.yaml

系统确认部署创建成功。
如何在Kubernetes上部署PostgreSQL(详细分步指南)

文章图片
第 4 步:创建并应用 PostgreSQL 服务
1. Kubernetes如何部署PostgreSQL?最后,创建 YAML 文件以配置 PostgreSQL 服务。
nano postgres-service.yaml

2. 指定服务类型和端口。该示例使用以下配置:
apiVersion: v1 kind: Service metadata: name: postgres labels: app: postgres spec: type: NodePort ports: - port: 5432 selector: app: postgres

3. 保存文件并退出。应用配置kubectl
kubectl apply -f postgres-service.yaml

系统确认服务创建成功。
如何在Kubernetes上部署PostgreSQL(详细分步指南)

文章图片
4. 使用以下命令列出系统上的所有资源。
kubectl get all

pod 和部署显示1/1就绪状态。所需的副本集数量反映了部署 YAML 文件中的配置。
如何在Kubernetes上部署PostgreSQL(详细分步指南)

文章图片
第 5 步:连接到 PostgreSQL
1、如何在Kubernetes上部署PostgreSQL?当所有资源准备好后,使用kubectl exec登录PostgreSQL实例。
kubectl exec -it [ pod-name] --psql -h localhost -U admin --password -p [ port] postgresdb

2. 系统要求输入密码。输入在步骤 1 中定义的密码并按Enter 键。该psql 命令提示。
如何在Kubernetes上部署PostgreSQL(详细分步指南)

文章图片
数据库现在已准备好接收用户输入。
注意:在裸机上部署高可用 PostgreSQL 集群的一种简单方法是使用Rancher 控制的 Kubernetes 集群。
Kubernetes部署PostgreSQL教程总结Kubernetes如何部署PostgreSQL?完成本教程后,你应该知道如何使用手动方法和 Helm 图表在 Kubernetes 上部署 PostgreSQL。
有关使用 PostgreSQL 数据库的信息,请阅读如何在 PostgreSQL 中创建数据库或浏览以下相关文章之一。

    推荐阅读