当前位置: 首页 > news >正文

K8S部署postgresql

(作者:陈玓玏)


一、前置条件

  1. 已部署k8s,服务端版本为1.21.14

二、部署postgresql

  1. 拉取镜像,docker pull postgres,不指定版本,自动从docker hub拉取最新版本;
  2. 配置configmap,保存postgresql的用户名、密码等信息,注意密码如果是数字,需要用双引号裹起来;
apiVersion: v1
kind: ConfigMap
metadata:name: pg-configlabels:app: postgres
data:POSTGRES_DB: pgdbPOSTGRES_USER: pgadminPOSTGRES_PASSWORD: "123456"

创建 Postgres ConfigMap 资源,kubectl apply -f postgresql.yaml;
在这里插入图片描述3. 持久卷声明,创建pv和pvc,用于数据的持久化存储:

kind: PersistentVolume
apiVersion: v1
metadata:name: pg-pv-volumelabels:type: localapp: postgres
spec:storageClassName: manualcapacity:storage: 5GiaccessModes:- ReadWriteManyhostPath:path: "/home/postgresql/data"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:name: pg-pv-claimlabels:app: postgres
spec:storageClassName: manualaccessModes:- ReadWriteManyresources:requests:storage: 5Gi

保存后通过kubectl apply -f创建pv及pvc。
4. 创建deployment

apiVersion: apps/v1
kind: Deployment
metadata:name: pg-deployment
spec:strategy:type: Recreateselector:matchLabels:app: postgresreplicas: 1template:metadata:labels:app: postgresspec:containers:- name: postgresimage: postgres:11.5imagePullPolicy: "IfNotPresent"ports:- containerPort: 5432envFrom:- configMapRef:name: pg-configvolumeMounts:- mountPath: /var/lib/postgresql/dataname: postgredbvolumes:- name: postgredbpersistentVolumeClaim:claimName: pg-pv-claim

主要是要注意其中selector的app和metadata中的app名称要一致,另外引入的configmap名称要和前面的configmap一致等等。创建好yaml文件后,通过kubectl创建deployment。replica写1就好,数据库的副本数一般1就够了,避免读写冲突。

pg的版本如果不记得,可以通过docker images |grep postgresql查一下。
5. 创建service,对外暴露服务入口

apiVersion: v1
kind: Service
metadata:name: pg-servicelabels:app: postgres
spec:type: NodePortports:- port: 5432targetPort: 5432protocol: TCPselector:app: postgres

注意targetPort要和deployment暴露出来的一致,否则无法转发到deployment创建的pod。同样,写好yaml之后通过kubectl apply -f创建service。

三、验证部署结果

  1. 验证部署是否成功
    在这里插入图片描述
    service可以查询到,再尝试下使用pg,首先下载一个pg的客户端:apt -y install postgresql-client-12,下载完成后,登录pg,通过psql -U pgadmin -h 10.43.25.238 -p 5432 pgdb登录pg,数据库名、用户名、密码、端口、ip在前面都可以找到,能够登录即部署成功。登录成功如下:
    在这里插入图片描述

参考:

  1. https://hanggi.me/post/kubernetes/k8s-postgresql/
  2. https://stackoverflow.com/questions/28290488/get-error-you-must-install-at-least-one-postgresql-client-version-package-whe
  3. https://blog.csdn.net/dujidan/article/details/128862899

相关文章:

  • Node.js_基础知识(CommonJS模块化)
  • Hololens 2应用开发系列(1)——使用MRTK在Unity中设置混合现实场景并进行程序模拟
  • 23端口登录的Telnet命令+传输协议FTP命令
  • Django 表单
  • 【Git】深入理解 Git 分支合并操作:git merge dev 命令详解
  • 2024年,智慧文旅领航新时代,重塑旅行体验的未来篇章!
  • oppo手机备忘录记录怎么转移到华为手机?
  • wordpress 开源主题
  • Linux 开发工具vim、gcc/g++、makefile
  • TypeScript08:在TS中使用模块化
  • AGI概念与实现
  • 【接口测试】常见HTTP面试题
  • esp32 C3和S3 开发板电流对比
  • Docker基础教程 - 1 Docker简介
  • C++_运算符_逻辑运算符
  • 【翻译】babel对TC39装饰器草案的实现
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • django开发-定时任务的使用
  • E-HPC支持多队列管理和自动伸缩
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • linux学习笔记
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • nodejs:开发并发布一个nodejs包
  • Node项目之评分系统(二)- 数据库设计
  • React-redux的原理以及使用
  • 阿里云Kubernetes容器服务上体验Knative
  • 搭建gitbook 和 访问权限认证
  • 大整数乘法-表格法
  • 回顾2016
  • 解析 Webpack中import、require、按需加载的执行过程
  • 力扣(LeetCode)965
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 使用 QuickBI 搭建酷炫可视化分析
  • nb
  • postgresql行列转换函数
  • 如何用纯 CSS 创作一个货车 loader
  • ​520就是要宠粉,你的心头书我买单
  • # C++之functional库用法整理
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #NOIP 2014# day.2 T2 寻找道路
  • #ubuntu# #git# repository git config --global --add safe.directory
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • ( 10 )MySQL中的外键
  • (09)Hive——CTE 公共表达式
  • (16)Reactor的测试——响应式Spring的道法术器
  • (52)只出现一次的数字III
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (力扣)循环队列的实现与详解(C语言)
  • (力扣题库)跳跃游戏II(c++)
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)创业家杂志:UCWEB天使第一步