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

2021年11月20日02:20:01 发表评论 2,464 次浏览

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 安装。

如何在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?详细分步指南

通过从头开始创建配置来部署 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

系统确认配置文件创建成功。

如何在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 中创建数据库或浏览以下相关文章之一。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: