环境:
OS:Centos 7
k8s:1.28
pg:16.6
1.创建名称空间
kubectl create namespace ns-pg
2.配置configmap
保存postgresql的用户名、密码等信息,注意密码如果是数字,需要用双引号裹起来
vi 1-configmap.yaml
[root@master pg]# more 1-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: pg-confignamespace: ns-pglabels:app: postgres
data:POSTGRES_PASSWORD: "postgres"
我们这里只配置了密码,使用默认的postgres账号和postgres数据库
kubectl apply -f 1-configmap.yaml
3.创建pv
创建nfs子目录
mkdir -p /k8s/pg/data
[root@master pg]# more 2-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:name: pg-pvnamespace: ns-pg
spec:accessModes:- ReadWriteOncecapacity:storage: 200Mnfs:path: /k8s/pg/datareadOnly: falseserver: 192.168.1.102
kubectl apply -f 2-pv.yaml
4.创建pvc
[root@master pg]# more 3-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: pg-pvcnamespace: ns-pg
spec:accessModes:- ReadWriteOnceresources:requests:storage: 200MvolumeName: pg-pv
kubectl apply -f 3-pvc.yaml
5.创建deployment
vi 4-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:namespace: ns-pgname: pg-deployment
spec:strategy:type: Recreateselector:matchLabels:app: postgresreplicas: 1template:metadata:labels:app: postgresspec:containers:- name: postgresimage: registry.cn-shenzhen.aliyuncs.com/hxlk8s/postgresql:16.6imagePullPolicy: "IfNotPresent"ports:- containerPort: 5432envFrom:- configMapRef:name: pg-config ##configmap名称要和前面的configmap一致volumeMounts:- mountPath: /var/lib/postgresql/dataname: postgredbvolumes:- name: postgredbpersistentVolumeClaim:claimName: pg-pvc
kubectl apply -f 4-deployment.yaml
6.创建nodeport提供外部访问
[root@master pg]# more 5-nodeport.yaml
apiVersion: v1
kind: Service
metadata:name: pg-servicenamespace: ns-pglabels:app: postgres
spec:type: NodePortports:- port: 5432targetPort: 5432protocol: TCPnodePort: 30001selector:app: postgres
kubectl apply -f 5-nodeport.yaml
7.客户端登录
在一个worker节点上安装pg客户端
#安装PostgreSQL的yum仓库
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
#安装PostgreSQL 14版本
yum install -y postgresql14-server
登录
psql -U postgres -h 192.168.1.102 -p 30001 postgres