Kubernetes部署PostgreSQL教程介绍
PostgreSQL是一个可靠且健壮的关系数据库系统,具有符合 ACID 的事务。它旨在处理各种规模的工作负载,非常适合个人使用和大规模部署,例如数据仓库、大数据服务器或 Web 服务。
在 Kubernetes 上部署 PostgreSQL 会创建一个可扩展且可移植的 PostgreSQL 实例,利用 RDBMS 和编排平台的优点。
如何在Kubernetes上部署PostgreSQL?本文将向你展示在 Kubernetes 上部署 PostgreSQL 的两种方法 - 使用 Helm 图表或手动创建配置。
先决条件
- 安装了kubectl的 Kubernetes 集群
- 安装了 Helm 3
- 系统上的管理权限
使用 Helm 部署 PostgreSQL
Kubernetes如何部署PostgreSQL?Helm为你提供了一种在集群上部署 PostgreSQL 实例的快速简便的方法。
第 1 步:添加 Helm 存储库
1. 在Artifact Hub 中搜索你要使用的 PostgreSQL Helm 图表。通过键入以下内容将图表的存储库添加到本地 Helm 安装:
helm repo add [repository-name] [repository-address]
本文使用 Bitnami Helm chart 进行 PostgreSQL 安装。
2. 添加存储库后,更新本地存储库。
helm repo update
系统确认更新成功。
步骤 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
系统确认持久卷的创建。
步骤 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。
3.kubectl get
用于检查PVC是否连接到PV成功:
kubectl get pvc
状态列显示声明为Bound。
第 4 步:安装 Helm Chart
使用helm install
命令安装舵图。--set
向命令添加标志以将安装连接到你创建的 PVC 并启用卷权限:
helm install [release-name] [repo-name] --set persistence.existingClaim=[pvc-name] --set volumePermissions.enabled=true
安装成功后系统会显示报告。
步骤 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
系统开始处理端口连接。
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是准备好接受你的输入。
通过从头开始创建配置来部署 PostgreSQL
Kubernetes如何部署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
系统确认配置文件创建成功。
步骤 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。
4. 使用以下命令检查 PVC 是否连接到 PV:
kubectl get pvc
PVC 的状态为Bound,并且 PVC 已准备好用于 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
系统确认部署创建成功。
第 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
系统确认服务创建成功。
4. 使用以下命令列出系统上的所有资源。
kubectl get all
pod 和部署显示1/1就绪状态。所需的副本集数量反映了部署 YAML 文件中的配置。
第 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
命令提示。
数据库现在已准备好接收用户输入。
注意:在裸机上部署高可用 PostgreSQL 集群的一种简单方法是使用Rancher 控制的 Kubernetes 集群。
Kubernetes部署PostgreSQL教程总结
Kubernetes如何部署PostgreSQL?完成本教程后,你应该知道如何使用手动方法和 Helm 图表在 Kubernetes 上部署 PostgreSQL。
有关使用 PostgreSQL 数据库的信息,请阅读如何在 PostgreSQL 中创建数据库或浏览以下相关文章之一。