• PostgresSQL----基于Kubernetes部署PostgresSQL


    【PostgresSQL----基于Kubernetes部署PostgresSQL】


    一、创建SC、PV和PVC存储对象

    1.1 准备一个nfs服务器

    若无nfs服务器,可参考 NFS----搭建NFS服务器 部署一个

    1.2 编写SC、PV、PVC等存储资源文件

    如下资源文件包含SC、PV、PVC资源的声明,主要修改以下几个位置

    • 命名空间
      命名空间需要修改为自己的namespace,一下配置中共有三处需要修改
    • nfs服务器ip地址
      设置nfs服务器ip地址即可
    • nfs 服务器供挂载目录
      设置将存储目录挂载nfs服务器上的目录路径
    • 存储空间大小
      存储空间大小根据实际需求设置,注意PV和PVC中存储空间大小要保持一致。
    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: sc-postgres
      namespace: my-namespacce                             # 命名空间
    provisioner: kubernetes.io/no-provisioner
    volumeBindingMode: WaitForFirstConsumer
    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name:  pv-postgres
      namespace: my-namespacce                             # 命名空间
      labels:
        pv: pv-postgres
    spec:
      capacity:
        storage: 5Gi                                       # 存储空间大小
      accessModes:
      - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      storageClassName: sc-postgres
      nfs:
        path: /path/to/nfs/server/                         # nfs 服务器供挂载目录
        server: nfs-server-ip                              # nfs 服务器ip地址
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-postgres
      namespace: my-namespacce                             # 命名空间
      labels:
        pvc: pvc-postgres
    spec:
      storageClassName: sc-postgres
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 5Gi                                     # 存储空间大小
      selector:
        matchLabels:
          pv: pv-postgres
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    将修改后的配置文件,比如命名为:postgres_pvc_pv_sc.yaml

    1.3 编写部署PostgresSQL数据库的资源声明文件

    编写部署资源文件如下所示,包含deployment和service的声明,主要需要修改以下几个位置:

    • 命名空间
      命名空间需要统一修改为与上面部署PV和PVC一致的命名空间
    • 数据库配置
      配置数据库的用户名密码以及数据库名称,此外还需要设置最大连接数,默认的连接数为100,在实际应用中无法很难满足需求,因此这里最好在部署的时候直接设置
    • 对外开放端口
      对外开放端口用于外部访问的,在测试环境中通常是需要的,在生产环境中考虑安全性通常不需要的,这里按照测试环境的使用方式部署,即使用NodePort类型的Service,设置对外开发的端口即可

    其他配置均无需修改,如修改,则需要和上面PV以及PVC等配置文件名称等统一。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: postgres
      namespace: my-namespace                                 # 命名空间
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: postgres
      template:
        metadata:
          labels:
            app: postgres
        spec:
          containers:
            - name: postgres
              image: postgres:latest
              env:
                - name: POSTGRES_USER
                  value: postgres                             # 用户名
                - name: POSTGRES_PASSWORD
                  value: postgres                             # 密码
                - name: POSTGRES_DB
                  value: postgres                             # 数据库名
                - name: TZ
                  value: Asia/Shanghai
                - name: POSTGRES_MAX_CONNECTIONS
                  value: "20000"                              # 最大连接数
              ports:
                - containerPort: 5432
              volumeMounts:
                - name: postgres-storage
                  mountPath: /var/lib/postgresql/data
          volumes:
            - name: postgres-storage
              persistentVolumeClaim:
                claimName: pvc-postgres
    
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: postgres
      namespace: my-namespace                                 # 命名空间
    spec:
      selector:
        app: postgres
      ports:
        - port: 5432
          protocol: TCP
          targetPort: 5432
          nodePort: 30101                                      # 对外开放端口
      type: NodePort
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54

    将修改后的配置文件保存为 postgres.yaml 文件

    二、部署PostgresSQL

    2.1 部署 PV、PVC等存储对象

    执行如下命令即可

    kubectl apply -f postgres_pvc_pv_sc.yaml
    
    • 1

    2.2 部署PostgresSQL数据库

    执行如下命令即可

    kubectl apply -f postgres.yaml
    
    • 1

    2.3 查看是否创建成功

    执行如下命令,将my-namespace换成自己的命名空间,如果查看到pod状态已经running了,表示部署成功

    kubectl get pod -n my-namespace
    
    • 1
  • 相关阅读:
    记宝塔使用webhook自动化同步gitee代码
    BricsCAD v24.1.05(CAD建模软件)
    【SQL注入】(1)原理,框架
    [Qualcomm][GPIO]高通芯片引脚相关知识记录
    十四、流式编程(4)
    linux无界面手敲命令笔记
    关于代码性能优化的总结
    C多维数组指针(学习笔记)
    devops学习Day2-单元测试jacoco
    『无为则无心』Python基础 — 62、Python中自定义迭代器
  • 原文地址:https://blog.csdn.net/redrose2100/article/details/132769633