首页 > 数据库 >kubernetes集群部署postgre 12.6数据库服务

kubernetes集群部署postgre 12.6数据库服务

时间:2024-08-08 14:53:52浏览次数:20  
标签:name kubernetes db postgre pvc 12.6 postgres

背景:

因业务上线需要,研发中心要求在kubernetes测试集群部署一个postgre 12.6的数据库,用于业务功能调试。

一、实施部署postgre数据库: 

1、拉取postgre 12.6的镜像:

[root@harbor-02 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/images-speed-up/postgres:12.6
2017-latest: Pulling from mssql/server
699451820735: Pull complete 
861e6e6e8e5e: Pull complete 
4403d783b046: Pull complete 
Digest: sha256:3b913841850a4d57fcfcb798be86acc88ea0f2acc5478bc0c140a43e91c4a545
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/images-speed-up/postgres:12.6

2、上传postgre 12.6镜像到私库:

先tag处理一下。

[root@harbor-02 ~]# docker tag registry.cn-hangzhou.aliyuncs.com/images-speed-up/postgres:12.6 dockerhub.jiang.com/jiang-public/postgres:12.6

再上传到私有harbor库

[root@harbor-02 ~]# docker push dockerhub.jiang.com/jiang-public/postgres:12.6
The push refers to repository [dockerhub.jiang.com/jiang-public/postgres]
fdfec26b634f: Pushed 
ef3ecb9d5e46: Pushed 
548a79621a42: Pushed 
2017-latest: digest: sha256:ff8a63a2c900cf3201b9485267ff804db58fbeaed83287c94edd3b3359708854 size: 954

3、创建PersistentVolume、PersistentVolumeClaim存储:

因kubernetes集群环境是对接了hpe(华三)的iscsi存储,所以直接通过stoageclass创建pvc存储即可。不过这里会展示pv、pvc存储的yml配置内容。

pvc存储yml配置:

apiVersion: storage.k8s.io/v1
kind: PersistentVolumeClaim
metadata:
  name: postgre-db-pvc
  namespace: main-data-test
  selfLink: /api/v1/namespaces/main-data-test/persistentvolumeclaims/postgre-db-pvc
  annotations:
    boundinfo: >-
      [{"podName":"postgre-db-nrzqq-664c5d78c7-ms4t5","containerName":"postgre","volumeMount":{"name":"postgre-db-pvc","mountPath":"/var/lib/postgresql/data"}}]
    pv.kubernetes.io/bind-completed: 'yes'
    pv.kubernetes.io/bound-by-controller: 'yes'
    system/support-expansion: 'true'
    volume.beta.kubernetes.io/storage-provisioner: csi.hpe.com
  finalizers:
    - kubernetes.io/pvc-protection
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  volumeName: pvc-5fdfd0ae-4c77-423b-87f0-991508b76f60
  storageClassName: hpe-san
  volumeMode: Filesystem
status:
  phase: Used
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 10Gi

4、创建无状态的postgre数据库:

这里的无状态就是deployment控制器的配置。

kind: Deployment
metadata:
  name: postgre-db-nrzqq
  namespace: main-data-test
  generation: 1
  labels:
    app: postgre-db-nrzqq
    name: postgre-db
    version: v1
  annotations:
    deployment.kubernetes.io/revision: '1'
    sidecar.istio.io/inject: 'false'
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgre-db-nrzqq
      name: postgre-db
  template:
    metadata:
      labels:
        app: postgre-db-nrzqq
        name: postgre-db
        version: v1
      annotations:
        cni.projectcalico.org/ipv4pools: '["172.25.0.0/16"]'
        sidecar.istio.io/inject: 'false'
        system/container-registry-map: '{"postgre":"default"}'
        system/registry: default
        v1.multus-cni.io/default-network: kube-system/calico@eth0
    spec:
      volumes:
        - name: postgre-db-pvc
          persistentVolumeClaim:
            claimName: postgre-db-pvc
      containers:
        - name: postgre
          image: 'dockerhub.jiang.com/jiang-public/postgres:12.6'
          ports:
            - containerPort: 5432
              protocol: TCP
          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'
          resources:
            limits:
              cpu: '2'
              memory: 4Gi
            requests:
              cpu: '1'
              memory: 1Gi
          volumeMounts:
            - name: postgre-db-pvc
              mountPath: /var/lib/postgresql/data
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
          securityContext:
            privileged: false
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      serviceAccountName: default
      serviceAccount: default
      securityContext: {}
  strategy:
    type: Recreate
  minReadySeconds: 10
  revisionHistoryLimit: 10
  progressDeadlineSeconds: 600

1、volumes存储的声明:

2、volumeMounts:存储的挂载

3、env:环境变量的声明

            - name: POSTGRES_USER(postgre的用户)
              value: postgres
            - name: POSTGRES_PASSWORD(postgre用户的密码)
              value: postgres
            - name: POSTGRES_DB(postgre数据库的库名称)
              value: postgres
            - name: TZ(时区)
              value: Asia/Shanghai
            - name: POSTGRES_MAX_CONNECTIONS(postgre的连接数)
              value: '20000'

4、ports:端口的声明

        这里默认的是5432

5、创建servcie控制器配置,对外提供访问:

kind: Service
metadata:
  name: postgre-db
  namespace: main-data-test
  selfLink: /api/v1/namespaces/main-data-test/services/postgre-db
  labels:
    name: postgre-db
    system/appName: master-data-base
  annotations:
    binding_domains: ''
    system/https: 'false'
    system/lbgroup: group-dgdxw
    system/ruleComment: ''
    system/ruleName: postgre-db-out
    system/schemaPortname: tcp-port-0/TCP/21951
spec:
  ports:
    - name: tcp-port-0
      protocol: TCP
      port: 5432
      targetPort: 5432
  selector:
    name: postgre-db
  clusterIP: 172.37.137.21
  type: ClusterIP
  sessionAffinity: None

二、使用Navicat Premium连接:

可以直接通过 Navicat Premium 来连接postgre数据库。

登陆之后可以检查一下postgre的数据库名是否存在,进行测试一下。

 注:到此,在kubernetes集群上部署postgre数据库就完成了。希望可以帮助到大家。

标签:name,kubernetes,db,postgre,pvc,12.6,postgres
From: https://blog.csdn.net/jiang0615csdn/article/details/141026566

相关文章

  • ignite系列之19-数据源扩展Postgresql
    storeFactory.setDialect(dialect);storeFactory.setDataSourceFactory(newDefaultDataSourceFactory((Object)null));storeFactory.setCacheName(igniteTable.tableName());importjavax.cache.configuration.Factory;publicclassDefaultDataSourceFactory<T>impl......
  • kubernetes 核心实战 - 存储 - 3
    Kubernetes核心实战-存储介绍1.Kubernetes存储概念及其关系在Kubernetes中,存储的几个核心概念及其关系如下:Volume:在Pod内部使用的一块存储,生命周期与Pod一致。不同类型的Volumes提供不同的存储功能,例如emptyDir、hostPath、configMap等。PersistentV......
  • LangChain与Kubernetes的协奏曲:解锁容器编排的新境界
    LangChain与Kubernetes的协奏曲:解锁容器编排的新境界在云计算和微服务架构的浪潮中,Kubernetes已成为容器编排和管理的事实标准。LangChain,作为一个假设的编程辅助工具,如果存在,它可能会支持与Kubernetes集群的集成,以实现代码生成、部署和自动化管理的无缝对接。本文将探讨La......
  • kubernetes笔记-4-kubernetes资源管理
    一、、kubernetes资源分类:工作负载、发现与负载均衡、配置与存储、集群、和元数据1、工作负载型资源分为:有状态和无状态两种类型;无状态:每个pod均可被其它其他同类所取代;有状态:有其独特性,必须单独标识和管理;ReplicaSet、Deployment负责无状态应用管理;StatefulSet负责有状态应用管......
  • postgreSQL-12
    centos7-postgreSQL-12一、简介PostgreSQL是一个功能强大的开源的关系型数据库,底层基于c实现PostgreSQL社区特别活跃,基本是三个月发一版,允许跨版本升级PostgreSQL的官方地址:https://www.postgresql.orgPostgreSQL的国内社区:http://www.postgres.cn/v2/home以下基于12.x稳定......
  • 【Kubernetes】k8s集群资源调度
    目录一.k8s的List-Watch机制二.scheduler的调度过程三.指定节点调度Pod1.通过nodeName调度Pod2.通过节点标签选择器调度Pod3.通过亲和性调度Pod3.1.节点亲和性硬策略软策略当软、硬策略同时存在3.2.Pod亲和性Pod亲和性(podAffinity)Pod反亲和性(podAntiAffinity)......
  • 如何在 Kubernetes 中实现应用的无损上线和下线
    转载:https://mp.weixin.qq.com/s/LdquOPS34mLFqYjfI4J6fQ 在日常工作中,经常会接收到开发团队这样的反馈:为什么应用发布或重启的期间会出现少量的5xx异常,应该如何解决?在深入分析后,我们发现导致流量有损的原因有很多,比如:上线时,应用在就绪前收到流量,导致请求无法被处理;下线......
  • EF Core连接PostgreSQL数据库
    PostgreSQL数据库介绍PostgreSQL是一个功能强大的开源对象关系型数据库管理系统(RDBMS)。最初于1986年在加州大学伯克利分校的POSTGRES项目中诞生,PostgreSQL以其稳定性、灵活性和扩展性而著称。它支持丰富的数据类型、复杂的查询、事务完整性、多版本并发控制(MVCC)、存储过程等高级......
  • PostgreSQL学习之pg_recvlogical与pgoutput的使用
        参考:        pg内功修炼:逻辑复制_pgoutput-CSDN博客        PG原生解码工具pg_recvlogical的使用-在脑裂时帮我们找回丢失的数据-腾讯云开发者社区-腾讯云(tencent.com)        postgresql数据库的原生解码插件pg_recvlogical可以将wal......
  • Kubernetes Pod之间的通信
    Pod之间的通信可以通过以下几种方式实现:1.同一Pod内的容器通信:在同一个Pod内的容器可以通过localhost或者127.0.0.1进行通信,因为它们通过pause容器共享相同的网络命名空间和IP地址。2.Pod之间的通信:Pod之间的通信可以通过Service或者Endpoint来实现。Service是一个抽象的逻辑概......