背景
采用 Kubernetes yaml 文件安装 PostgresSQL 数据库
前置条件
安装步骤
部署数据库持久化所需的 PV 和 PVC
准备持久化路径,根据各自的需求修改即可。
root@k8s-master:/vm-server/dev/pega23/k8s_deploy# mkdir -p /vm-server/dev/pega23/data/postgres/data
准备创建持久化数据卷 yaml 文件
root@k8s-master:/vm-server/dev/pega23/k8s_deploy# cat 1_pega23-install_db_pvc.yaml
---
# pv
apiVersion: v1
kind: PersistentVolume
metadata:
name: pega23-install-db-data-pv
spec:
capacity:
storage: 1024Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /vm-server/dev/pega23/data/postgres/data
---
# pvc
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pega23-install-db-data-pvc
namespace: pega23-install
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1024Gi
部署持久化数据卷
root@k8s-master:/vm-server/dev/pega23/k8s_deploy# kubectl apply -f 1_pega23-install_db_pvc.yaml
persistentvolume/pega23-install-db-data-pv created
persistentvolumeclaim/pega23-install-db-data-pvc created
部署数据库
准备数据库 yaml 文件
root@k8s-master:/vm-server/dev/pega23/k8s_deploy# cat 2_pega23-install_db.yaml
---
# postgresql
apiVersion: apps/v1
kind: Deployment
metadata:
name: pega23-install-db
namespace: pega23-install
spec:
replicas: 1
selector:
matchLabels:
app: pega23-install-db
template:
metadata:
labels:
app: pega23-install-db
spec:
containers:
- name: pega23-install-db
image: postgres:15.4
ports:
- containerPort: 5432
volumeMounts:
- name: pega23-install-db-data
mountPath: /var/lib/postgresql/data
env:
- name: POSTGRES_USER
value: "postgres"
- name: POSTGRES_PASSWORD
value: "postgres"
volumes:
- name: pega23-install-db-data
persistentVolumeClaim:
claimName: pega23-install-db-data-pvc
---
# svc
apiVersion: v1
kind: Service
metadata:
name: pega23-install-svc
namespace: pega23-install
spec:
selector:
app: pega23-install-db
ports:
- protocol: TCP
port: 5432
targetPort: 5432
nodePort: 30029
type: NodePort
部署PostgreSQL
root@k8s-master:/vm-server/dev/pega23/k8s_deploy# kubectl apply -f 2_pega23-install_db.yaml
deployment.apps/pega23-install-db created
service/pega23-install-svc created
查看容器状态
root@k8s-master:/vm-server/dev/pega23/k8s_deploy# kubectl get pod,svc,pvc -n pega23-install
NAME READY STATUS RESTARTS AGE
pod/pega23-install-db-5f846c6784-2xfwr 0/1 ContainerCreating 0 88s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/pega23-install-svc NodePort 10.98.142.126 <none> 5432:30029/TCP 90s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
persistentvolumeclaim/pega23-install-db-data-pvc Bound pega23-install-db-data-pv 1Ti RWO <unset> 30m
可通过 describe 指令查看详细信息
root@k8s-master:/vm-server/dev/pega23/k8s_deploy# kubectl describe pod/pega23-install-db-5f846c6784-2xfwr -n pega23-install
Name: pega23-install-db-5f846c6784-2xfwr
Namespace: pega23-install
Priority: 0
Service Account: default
Node: k8s-worker-1/192.168.122.109
Start Time: Sat, 21 Sep 2024 11:18:52 +0800
Labels: app=pega23-install-db
******
接下来等待容器部署即可,部署完成或者部署期间可以通过 logs 指令查看容器内 log 信息。
root@k8s-master:/vm-server/dev/pega23/k8s_deploy# kubectl logs -f --tail 10 pega23-install-db-5f846c6784-2xfwr -n pega23-install
server stopped
PostgreSQL init process complete; ready for start up.
2024-09-21 03:27:04.850 UTC [1] LOG: starting PostgreSQL 15.4 (Debian 15.4-2.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
2024-09-21 03:27:04.886 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
2024-09-21 03:27:04.886 UTC [1] LOG: listening on IPv6 address "::", port 5432
2024-09-21 03:27:04.997 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-09-21 03:27:05.106 UTC [63] LOG: database system was shut down at 2024-09-21 03:27:04 UTC
2024-09-21 03:27:05.244 UTC [1] LOG: database system is ready to accept connections
至此数据库安装已完成,记得备份哦!