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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2815534.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

jetson nano——编译安装PySide2

目录 1.打开我提供的文件or官网自己下载(需对应PyQt5的版本)2.解压文件3.进入目录4.安装clang5. 编译安装6.报错: error: ‘NPY_ARRAY_UPDATEIFCOPY’ was not declared in this scope7.又报错:error: ‘NPY_ARRAY_UPDATEIFCOPY’ was not de…

4-Bean的循环依赖

Bean的循环依赖 循环依赖指的是依赖闭环的问题 解决 首先我们来实例化A,实例化A时并没有处理依赖注入,因此会得到半成品A。有了半成品A,它会被封装成一个ObjectFactory,并且把它放入第三个缓存区singletonFactories中。 接下来要…

Coursera吴恩达机器学习专项课程02:Advanced Learning Algorithms 笔记 Week02

Week 02 of Advanced Learning Algorithms 笔者在2022年7月份取得这门课的证书,现在(2024年2月25日)才想起来将笔记发布到博客上。 Website: https://www.coursera.org/learn/advanced-learning-algorithms?specializationmachine-learnin…

Dledger部署RocketMQ高可用集群(9节点集群)

文章目录 🔊博主介绍🥤本文内容规划集群准备工作节点0配置(ip地址为192.168.80.101的机器)节点1配置(ip地址为192.168.80.102的机器)节点2配置(ip地址为192.168.80.103的机器)在所有…

动态规划之解码方法【LeetCode】

动态规划之解码方法 91. 解码方法解法1解法2 91. 解码方法 91. 解码方法 解法1 状态表示(这是最重要的):dp[i]表示以第i个字符为结尾,解码方法的总数。 状态转移方程(最难的):根据最近的一步来…

大模型(LLM)的token学习记录-I

文章目录 基本概念什么是token?如何理解token的长度?使用openai tokenizer 观察token的相关信息open ai的模型 token的特点token如何映射到数值?token级操作:精确地操作文本token 设计的局限性 tokenizationtoken 数量对LLM 的影响训练模型参…

134.乐理基础-音程名字的简写

内容参考于:三分钟音乐社 上一个内容:133.乐理基础-超过八度的音程判断单音程、复音程-CSDN博客 上一个内容里练习的答案: 音程的简写,然后有些练习无限判断隐藏的app,它给的不是大二度、增四度、小六度等等这样的中…

【MySQL】学习多表查询和笛卡尔积 - 副本

](https://img-blog.csdnimg.cn/21dd41dce63a4f2da07b9d879ad0120b.png#pic_center) ??个人主页: ??热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ??个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-N8PeTKG6uLu4bJuM {font-family:“trebuchet ms”,…

同源不同页面之间的通信,SharedWorker使用

同源不同页面之间的通信,SharedWorker使用 描述实现结果 描述 同源不同页面之间的通信,使用SharedWorker,或者使用全局方法通信,这里使用SharedWorker来实现 mdn地址:https://developer.mozilla.org/zh-CN/docs/Web/A…

AUTOMATION 自动化控制

Ansible介绍: 部署ansible:yum -y install ansible 批量管理服务器的工具2015年被红帽公司收购使用Python语言编写的基于ssh进行管理,所以不需要在被管端安装任何软件 ansible在管理远程主机的时候,主要是通过各种模块进行操作的 配置ansible管理环境: …

模型预测控制MPC算法的讲解-案例(C语言代码)

目录 一、模型预测控制MPC的基本原理 1.1 建立模型 1.2 设定目标和约束条件 1.3 求解优化问题 1.4 应用控制输入 1.5 重复优化 二、模型预测控制MPC的特点 三、应用场景 四、应用案例 一个MPC算法的简化版框架: 4.1 案例系统模型 4.2 控制目标和当前状态…

Java中使用Jsoup实现网页内容爬取与Html内容解析并使用EasyExcel实现导出为Excel文件

场景 Pythont通过request以及BeautifulSoup爬取几千条情话: Pythont通过request以及BeautifulSoup爬取几千条情话_爬取情话-CSDN博客 Node-RED中使用html节点爬取HTML网页资料之爬取Node-RED的最新版本: Node-RED中使用html节点爬取HTML网页资料之爬…

链表之“带头双向循环链表”

目录 ​编辑 1.链表的分类 2.带头双向循环链表的实现 1.创建结构体 2.创建返回链表的头节点 3.双向链表销毁 4.双向链表打印 5.双向链表尾插 6.双向链表尾删 7.双向链表头插 8.双向链表头删 9.双向链表查找 10.双向链表在pos的前面进行插入 11.双向链表删除pos位…

蓝桥杯前端Web赛道-课程列表

蓝桥杯前端Web赛道-课程列表 题目链接:0课程列表 - 蓝桥云课 (lanqiao.cn) 题目要求如下: 分析题目我们发现其实就是需要我们手写一个分页的功能,根据题目的要求,分析如下 需要通过axios获取数据每页显示5条数据,默…

【深度学习笔记】深度卷积神经网络——NiN

网络中的网络(NiN) LeNet、AlexNet和VGG都有一个共同的设计模式:通过一系列的卷积层与汇聚层来提取空间结构特征;然后通过全连接层对特征的表征进行处理。 AlexNet和VGG对LeNet的改进主要在于如何扩大和加深这两个模块。 或者&am…

77. 组合(力扣LeetCode)

文章目录 77. 组合题目描述回溯算法组合问题的剪枝操作 77. 组合 题目描述 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n 4, k 2 输出: [ [2,4], [3,4],…

抖音视频评论采集软件|抖音数据抓取工具

抖音视频评论采集软件是一款基于C#开发的高效、便捷的工具,旨在为用户提供全面的数据采集和分析服务。该软件不仅支持通过关键词进行搜索抓取,还能够通过分享链接进行单个视频的抓取和下载,让用户轻松获取抖音视频评论数据。 其中&#xff0c…

Java特性之设计模式【命令模式】

一、命令模式 概述 ​ 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象&…

进程间通信——进程与线程——day12

在进程间的通信,主要分为6部分内容,分别是:管道、信号、消息队列、共享内存、信号灯以及套接字 今天主要讲一下管道以及信号 管道 无名管道: 无名管道只能用于具有亲缘关系的进程间通信 pipeint pipe(int pipefd[2]);功能:创建…

QT C++实战:实现用户登录页面及多个界面跳转

主要思路 一个登录界面,以管理员Or普通用户登录管理员:一个管理员的操作界面,可以把数据录入到数据库中。有返回登陆按钮,可以选择重新登陆(管理员Or普通用户普通用户:一个主界面,负责展示视频…