k8s 启动 postgresql 数据库

yaml 复制代码
# PostgreSQL StatefulSet 配置(开发/测试环境单副本)
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: postgres-deployment
  labels:
    app.kubernetes.io/name: postgres
    app.kubernetes.io/instance: postgres-instance
spec:
  # StatefulSet 必需:关联无头服务提供固定网络标识
  serviceName: postgres-headless
  # 单副本部署(生产环境建议≥2副本+主从复制)
  replicas: 1
  # 标签选择器:匹配Pod模板标签
  selector:
    matchLabels:
      app.kubernetes.io/name: postgres
      app.kubernetes.io/instance: postgres-instance
  template:
    metadata:
      labels:
        app.kubernetes.io/name: postgres
        app.kubernetes.io/instance: postgres-instance
    spec:
      containers:
      - name: postgres
        # 指定PostgreSQL 14.12镜像(建议使用官方镜像或可信镜像源)
        image: docker.1ms.run/postgres:14.12
        imagePullPolicy: IfNotPresent
        # 暴露PostgreSQL默认端口
        ports:
        - containerPort: 5432
          name: postgres
          protocol: TCP
        # 环境变量配置(生产环境需迁移至Secret存储敏感信息)
        env:
        - name: POSTGRES_PASSWORD
          value: "lb781023"
        # 数据库初始化参数:UTF-8编码,简化排序规则
        - name: POSTGRES_INITDB_ARGS
          value: "--encoding=UTF8 --lc-collate=C --lc-ctype=C"
        # 时区配置:亚洲/上海(统一集群时区)
        - name: TZ
          value: "Asia/Shanghai"
        # 数据目录挂载配置
        volumeMounts:
        - name: postgres-data
          mountPath: /var/lib/postgresql/data
          # 子路径:避免存储目录权限冲突,隔离数据文件
          subPath: postgres
        # 资源配额:基于工作负载需求合理配置(避免资源过度分配或饥饿)
        resources:
          requests:
            cpu: 500m
            memory: 1Gi
          limits:
            cpu: 1000m
            memory: 2Gi
  # PVC模板:为每个Pod自动创建专属持久化存储(StatefulSet核心特性)
  volumeClaimTemplates:
  - metadata:
      name: postgres-data
      labels:
        app.kubernetes.io/name: postgres
        app.kubernetes.io/instance: postgres-instance
    spec:
      # 访问模式:单节点读写(数据库存储标准配置)
      accessModes: [ "ReadWriteOnce" ]
      # 存储类:使用longhorn分布式存储(确保数据持久化可靠性)
      storageClassName: "longhorn"
      # 存储资源请求:根据数据量预估配置
      resources:
        requests:
          storage: 10Gi
---
# PostgreSQL 外部访问服务(NodePort类型)
apiVersion: v1
kind: Service
metadata:
  name: postgres-service
  labels:
    app.kubernetes.io/name: postgres
    app.kubernetes.io/instance: postgres-instance
spec:
  # 关联PostgreSQL Pod标签
  selector:
    app.kubernetes.io/name: postgres
    app.kubernetes.io/instance: postgres-instance
  # 服务类型:NodePort(开发/测试环境外部访问常用方式)
  type: NodePort
  ports:
  - name: postgres
    # Service集群内部端口(与目标端口一致,简化配置)
    port: 5432
    # 目标端口:映射至Pod暴露端口
    targetPort: 5432
    # 节点暴露端口:30000-32767范围内,需确保集群内端口唯一
    nodePort: 5432
    protocol: TCP
---
# PostgreSQL 无头服务(StatefulSet必需)
apiVersion: v1
kind: Service
metadata:
  name: postgres-headless
  labels:
    app.kubernetes.io/name: postgres
    app.kubernetes.io/instance: postgres-instance
spec:
  # 无头服务标识:clusterIP=None
  clusterIP: None
  selector:
    app.kubernetes.io/name: postgres
    app.kubernetes.io/instance: postgres-instance
  ports:
  - name: postgres
    port: 5432
    targetPort: 5432
    protocol: TCP
相关推荐
nxb5562 小时前
云原生:kubernetes的service
微服务·云原生·容器·kubernetes
ZzzZZzzzZZZzzzz…2 小时前
K8s---组件
运维·云原生·容器·kubernetes·k8s·k8s组件
倍利福猎头公司官方账号2 小时前
2026机器人猎头公司怎么选?收费标准与合作注意事项【HR版】
大数据·数据库·机器人·求职招聘·业界资讯
行业研究员2 小时前
云原生数据库推荐排行与选型
数据库·云原生·云原生库
Maynor9962 小时前
「原子弹爆炸」级别:Astra 复刻游戏合集(含实机截图)
java·linux·运维·数据库·gpt·游戏
陈皮糖..2 小时前
基于 Kubernetes 与 GitLab CI/CD 的云原生自动化交付平台
运维·ci/cd·云原生·架构·kubernetes·自动化·gitlab
低代码布道师2 小时前
外包项目管理平台全栈实战课02搭建数据底座:Next.js + PostgreSQL + Prisma 7
开发语言·javascript·postgresql·全栈开发
蓝速科技2 小时前
蓝速科技丨多网点涉外窗口翻译机批量部署实战指南
服务器·数据库·人工智能·缓存·语音识别
2601_967019512 小时前
免费SSL与商业SSL证书对比:企业生产环境适用性评估
数据库
小诗懂技术2 小时前
【sqlite3数据库】一站式学会 增删改查 以及数据库c接口编程
数据库·sqlite