K8S部署postgresql
(作者:陈玓玏)
一、前置条件
- 已部署k8s,服务端版本为1.21.14
二、部署postgresql
- 拉取镜像,docker pull postgres,不指定版本,自动从docker hub拉取最新版本;
- 配置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。
三、验证部署结果
- 验证部署是否成功

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

参考:
- https://hanggi.me/post/kubernetes/k8s-postgresql/
- https://stackoverflow.com/questions/28290488/get-error-you-must-install-at-least-one-postgresql-client-version-package-whe
- https://blog.csdn.net/dujidan/article/details/128862899
相关文章:
K8S部署postgresql
(作者:陈玓玏) 一、前置条件 已部署k8s,服务端版本为1.21.14 二、部署postgresql 拉取镜像,docker pull postgres,不指定版本,自动从docker hub拉取最新版本;配置configmap&…...
Go 如何控制并发的goroutine数量?
为什么要控制goroutine并发的数量? 在开发过程中,如果不对goroutine加以控制而进行滥用的话,可能会导致服务整体崩溃。比如耗尽系统资源导致程序崩溃,或者CPU使用率过高导致系统忙不过来。 用什么方法控制goroutine并发的数量&a…...
【黑马程序员】1、TypeScript介绍_黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程
课程地址:【黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程】 https://www.bilibili.com/video/BV14Z4y1u7pi/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 1、TypeScript介绍 1.1 TypeScript是什…...
JS进阶——深入对象
构造函数 封装是面向对象思想中比较重要的一部分,js面向对象可以通过构造函数实现的封装。 前面我们学过的构造函数方法很好用,但是 存在浪费内存的问题 原型 目标:能够利用原型对象实现方法共享 构造函数通过原型分配的函数是所有对象所…...
Gitlab部署管理
一、安装 1.docker安装gitlab sudo docker run -d \-p 6080:80 -p 6022:22 \--name gitlab \--restart always \-v /srv/gitlab/config:/etc/gitlab \-v /srv/gitlab/logs:/var/log/gitlab \-v /srv/gitlab/data:/var/opt/gitlab \gitlab/gitlab-ce:latest2.存储说明 存储应…...
MyBatis 学习(二)之 第一个 MyBatis 案例
目录 1 配置 MyBatis 方式 1.1 XML 配置文件 1.2 Java 注解配置 1.3. Java API 配置 2 在 MySQL 中创建一张表 3 创建一个基于 Maven 的 JavaWeb 工程 4 编写 User 实体类 5 创建 Mybatis 全局配置文件 6 编写一个 DAO 或 Mapper 接口 7 编写 SQL 映射配置文件&#…...
30天自制操作系统(第21天)
21.1 攻克难题——字符串显示API 显示单个字符时,用 [CS:ECX] 的方式特意指定了 CS(代码段寄存器),因此可以成功读取 msg的内容。但在显示字符串时,由于无法指定段地址,程序误以为是 DS而从完全错误的内存地…...
linux系统Jenkins的安装
Jenkins安装 安装上传安装包解压包首次登录要去服务器查看密码,更改密码选择需要安装的插件设置Admin用户和密码安装完成 安装 上传安装包 上传 jdk17 tomcat jenkins.war的安装包 . 上传 tomcat安装包解压包 解压jdk tar xf jdk-11.0.18_linux-x64_bin.tar.gz解…...
【GStreamer】basic-tutorial-1:GstBus、GstMessage详解
【目录】郭老二博文之:图像视频汇总 1、先看示例 #include <gst/gst.h>int main (int argc, char *argv[]) {GstElement *pipeline;GstBus...
Python中的可变变量与不可变变量
python中的可变与不可变变量 一、变量的三个参数 就像区分一个人一样,同样都是张三,可能这个张三就不是那个张三。同一个变量是指的什么相同呢? Python中的对象包含三个要素,id(内存地址),typ…...
OpenGL调用窗口,方向键和鼠标
9.2 OpenGL调用窗口,方向键和鼠标 9.2.1 opengl调用窗口 OpenGL调用窗口步骤: 第一步:初始化 GLFW,初始化OpenGL,初始化窗口,初始化上下文 第二步:设置窗口大小和位置,设置输入输出 第三步…...
fastAdmin表格列表的功能
更多文章,请关注:fastAdmin后台功能详解 | 夜空中最亮的星 FastAdmin是一款基于ThinkPHP5Bootstrap的极速后台开发框架。优点见开发文档 介绍 - FastAdmin框架文档 - FastAdmin开发文档 在这里上传几张优秀的快速入门图: 一张图解析FastAdmin中的表格列…...
用来检查 CUDA、Conda 和 PyTorch 的版本的python文件
提供的 Python 代码片段包括几个语句,用来检查 CUDA、Conda 和 PyTorch 的版本,以及一些与 CUDA 相关的系统配置。让我们分解一下:PyTorch 版本和配置:torch.__config__.show():显示 PyTorch 的构建配置。 torch.__ver…...
基于Redisson,实现分布式锁注解
1.原始写法 我们平常使用redisson的分布式锁是不是基本都用下面的这个模板,既然是模板,那为何不把他抽出来呢? // 尝试加锁,最多等待100秒,上锁以后10秒自动解锁 boolean res lock.tryLock(100, 10, TimeUnit.SECON…...
【机器学习】机器学习是什么?
你知道机器学习是什么吗?它就像是一个超级聪明的孩子,可以通过观察和经验不断学习和成长。而我们要做的就是培养和教育这个孩子,让他能够从数据中学习并做出决策和预测。 那么,我们该如何培养和教育这个聪明的孩子呢?首…...
一文速览深度伪造检测(Detection of Deepfakes):未来技术的守门人
一文速览深度伪造检测(Detection of Deepfakes):未来技术的守门人 前言一、Deepfakes技术原理卷积神经网络(CNN):细致的艺术学徒生成对抗网络(GAN):画家与评审的双重角色…...
C# 中的执行表达式树(Expression Tree)
引言: 在C#编程中,表达式树(Expression Tree)是一种强大的工具,用于表示和执行计算表达式。表达式树将计算表达式抽象为树状结构,每个节点代表表达式中的一个元素,如常量、变量、方法调用等。本…...
森林监测VR虚拟情景再现系统更便利
AI人工智能技术已经逐渐渗透到各个领域,为我们的生活带来了诸多便利。在虚拟仿真教学领域,AI技术的应用也日益丰富,为虚拟情景交互体验带来了前所未有的好处。 提高VR虚拟情景的逼真度 通过深度学习和计算机视觉等技术,AI/VR虚拟现…...
高频面试题整理(一)
文章目录 平台无关性如何实现?JVM如何加载 .class文件?什么是反射?谈谈ClassLoader谈谈类的双亲委派机制类的加载方式Java的内存模型?JVM内存模型-jdk8程序计数器:Java虚拟机栈局部变量表和操作数栈: Java内存模型中堆和栈的区别…...
2-23 switch、JVM内存模型、垃圾回收机制、this、static、变量的分类
文章目录 switch 实现成绩评级JVM内存模型概念栈的特点堆的特点 垃圾回收机制通用的分代垃圾回收机制三种清理算法垃圾回收过程垃圾回收常见的两种检测引用算法内存泄露常见原因 this的用法创建对象的四步 static 静态特点 变量的分类和作用域import switch 实现成绩评级 switc…...
解析CSV文件处理中的常见问题与解决方案
引言 在数据科学和机器学习领域,处理CSV文件是常见的任务。通过一个实际案例,我们将探讨在使用Python和Streamlit开发一个CSV数据处理和分析工具时可能遇到的问题及其解决方法。 问题背景 我们开发了一个基于Streamlit的应用程序,用于读取用户上传的CSV文件,进行数据分析…...
解读核心Maintainer观点|Presto 不只是版本升级!从查询引擎到湖仓执行层,AI Infra 新方向
最近看了InfoQ上的一篇文章《Presto 的再定位:从查询引擎到下一代数据湖执行层》,了解了从核心Maintainer视角观察到的Presto及整个数据基础设施行业范式的迁移,深有感触。对于做数据开发、湖仓架构或AI工程的同学来说,Presto的这…...
GitHub Copilot X vs. Cursor Pro vs. Tabnine Ultra vs. 通义灵码2.0:2026奇点智能技术大会独家实测数据曝光(附IDE响应延迟毫秒级对比表)
第一章:2026奇点智能技术大会:AI编程助手对比评测 2026奇点智能技术大会(https://ml-summit.org) 在2026奇点智能技术大会上,来自全球12家主流厂商的AI编程助手接受了统一基准测试——包括代码补全准确率、跨文件上下文理解、调试建议有效性…...
当Copilot写出恶意反序列化代码时——智能代码生成安全风险评估的“黄金45分钟”响应协议(含SAST+DAST+LLM-Sandbox三重验证机制)
第一章:当Copilot写出恶意反序列化代码时——智能代码生成安全风险评估的“黄金45分钟”响应协议(含SASTDASTLLM-Sandbox三重验证机制) 2026奇点智能技术大会(https://ml-summit.org) 当开发者在IDE中键入// Deserialize untrusted JSON pa…...
AbMole 丨 FIN56 通过降解 GPX4 与调控 CoQ10 诱导铁死亡
FIN56(AbMole,M6731)是一种铁死亡(ferroptosis)诱导剂[1],其作用机理具有双重性:一方面,FIN56通过诱导谷胱甘肽过氧化物酶4(GPX4)蛋白的降解来触发铁死亡&…...
SITS2026私有化部署最后窗口期:仅剩62天,官方将于5月31日关闭v1.x License续订通道
第一章:智能代码生成技术:SITS2026开发工具专场 2026奇点智能技术大会(https://ml-summit.org) SITS2026 是面向下一代 AI 原生开发范式的集成式智能工具套件,深度融合大语言模型推理引擎与 IDE 行为感知层,支持上下文感知的实时…...
别光看init.rc了!/system、/vendor、/odm下那些*.rc文件,Android 11是怎么决定谁先谁后的?
Android 11启动脚本加载机制深度解析:从/system到/odm的优先级博弈 在Android系统启动过程中,init进程扮演着至关重要的角色。作为Linux内核启动后的第一个用户空间进程,它负责初始化系统环境、挂载文件系统、启动关键守护进程等一系列基础工…...
Hermes Agent怎么部署?2026年阿里云计算巢/无影/轻量服务器部署图文教程及常见问题汇总
Hermes Agent是由Nous Research开发的开源自主AI智能体,遵循MIT开源协议,核心价值在于持久化记忆与完整的自我学习闭环。它并非简单的代码辅助工具或套壳聊天机器人,而是能自主创建技能、在使用中优化技能、跨会话召回记忆的"数字员工&q…...
Three.js动画效果
<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>Three.js 建模鼻祖点线面全息投影</title><style>body { margin: 0; overflow: hidden; background: #000; }#ui {position: absolute;…...
Office Timeline Plus(PPT时间线制作) 14.05
Office Timeline Plus 是一款专业的PPT时间线制作软件,作为PowerPoint的强大插件深度集成到Office办公环境中。该PowerPoint时间轴插件让用户能够在制作演示文稿时轻松添加时间轴元素,为每个时间段编辑不同的内容,是Windows和Office平台上备受…...
