Henry
发布于 2024-09-21 / 21 阅读
0
0

PostgreSQL 数据库安装 - Kubernetes yaml

背景

采用 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

至此数据库安装已完成,记得备份哦!


评论