基于docker
拉取镜像,这个镜像是我自己的阿里云镜像,拉取的国外的镜像。
docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/postgres:latest
创建 dolphinscheduler 命名空间,本文命名空间是使用的dolphinscheduler
使用 kubectl 命令创建命名空间:
kubectl create namespace dolphinscheduler
- 创建 PersistentVolume (PV)
首先,定义一个 PersistentVolume,它将使用你的存储资源(如主机路径、NFS、云存储等)。
vi postgres-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: postgres-pv
namespace: dolphinscheduler
spec:
capacity:
storage: 10Gi # 存储大小
accessModes:
- ReadWriteOnce # 允许单节点读写
persistentVolumeReclaimPolicy: Retain # 保留策略
hostPath:
path: /data/postgres # 主机路径,存储数据的地方
- 创建 PersistentVolumeClaim (PVC)
接着,定义一个 PersistentVolumeClaim,它会绑定到上面的 PersistentVolume 上。
vi postgres-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-pvc
namespace: dolphinscheduler
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi # 申请的存储大小
- 创建 Deployment 以使用 PVC
PostgreSQL Deployment 配置,添加卷挂载,并将数据库的数据目录挂载到持久化存储中。
vi postgres-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
namespace: dolphinscheduler
spec:
replicas: 1
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/postgres:latest
ports:
- containerPort: 5432
env:
- name: POSTGRES_USER
value: "postgres"
- name: POSTGRES_PASSWORD
value: "Yo5WYypu0mCCheUX"
- name: POSTGRES_DB
value: "postgres"
volumeMounts:
- name: postgres-storage
mountPath: /var/lib/postgresql/data # PostgreSQL 数据目录
volumes:
- name: postgres-storage
persistentVolumeClaim:
claimName: postgres-pvc
Yo5WYypu0mCCheUX
是密码
创建 postgres-service.yaml 添加一个 Service 来暴露 PostgreSQL 的端口:
vi postgres-service.yaml
apiVersion: v1
kind: Service
metadata:
name: postgres-service
namespace: dolphinscheduler
spec:
type: NodePort
selector:
app: postgres
ports:
- protocol: TCP
port: 5432 # Service 在集群内部暴露的端口
targetPort: 5432 # 容器内部的端口
nodePort: 30432 # 指定的 NodePort 端口号
- 应用所有配置
将上述配置保存为 YAML 文件,然后使用 kubectl apply 命令逐个应用。
kubectl apply -f postgres-pv.yaml
kubectl apply -f postgres-pvc.yaml
kubectl apply -f postgres-deployment.yaml
kubectl apply -f postgres-service.yaml