k8s下部署postgresql

环境:

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-config
  namespace: ns-pg
  labels:
    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-pv
  namespace: ns-pg
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 200M
  nfs:
    path: /k8s/pg/data
    readOnly: false
    server: 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-pvc
  namespace: ns-pg
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 200M
  volumeName: pg-pv
  

 

kubectl apply -f 3-pvc.yaml

 

5.创建deployment
vi 4-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: ns-pg
  name: pg-deployment
spec:
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: postgres
  replicas: 1
  template:
    metadata:
      labels:
        app: postgres
    spec:
      containers:
        - name: postgres
          image: registry.cn-shenzhen.aliyuncs.com/hxlk8s/postgresql:16.6
          imagePullPolicy: "IfNotPresent"
          ports:
            - containerPort: 5432
          envFrom:
            - configMapRef:
                name: pg-config ##configmap名称要和前面的configmap一致
          volumeMounts:
            - mountPath: /var/lib/postgresql/data
              name: postgredb
      volumes:
        - name: postgredb
          persistentVolumeClaim:
            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-service
  namespace: ns-pg
  labels:
    app: postgres
spec:
  type: NodePort
  ports:
  - port: 5432
    targetPort: 5432
    protocol: TCP
    nodePort: 30001
  selector:
   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

 

posted @ 2025-03-06 17:51  slnngk  阅读(461)  评论(0)    收藏  举报