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

(k8s)k8s部署mysql与redis(无坑版)

0.准备工作

在开始之前,要确保我们的节点已经加入网络并且已经准备好,如果没有可以去看我前面发表的踩坑与解决的文章,希望能够帮到你。

1.k8s部署redis

1.1目标

由于我们的服务器资源较小,所以决定只部署一个redis副本,同时我们要能够提供一个对外的端口进行连接以及使用我们自己的自定义redis配置文件。

1.2效果

成功之后的效果应该如下图中有关redis的部分

1.3项目结构

redis-configmap.yaml

  • 作用:用于在 Kubernetes 中创建一个 ConfigMap,用来存储 Redis 的配置文件内容。

redis-statefulset.yaml

  • 作用:定义一个 StatefulSet,用于部署和管理 Redis 的有状态应用。

redis.conf

  • 作用:Redis 的核心配置文件,用于定义 Redis 的运行参数。

1.4代码展示

redis-config.yaml

apiVersion: v1
kind: ConfigMap
metadata:name: redis-config
data:redis.conf: |save 86400 1  appendonly no 

 redis-statefulset.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:name: redis-cluster
spec:serviceName: "redis-cluster"replicas: 1  selector:matchLabels:app: redis-clustertemplate:metadata:labels:app: redis-clusterspec:containers:- name: redisimage: redis:alpine  # 使用官方的 Redis 镜像ports:- containerPort: 6379  # Redis 默认端口volumeMounts:- name: redis-datamountPath: /data  # Redis 数据存储路径- name: redis-configmountPath: ******  # 挂载自定义配置文件subPath: redis.confcommand:- "redis-server"- "*******"  # 指定使用自定义的配置文件volumes:- name: redis-dataemptyDir: {}  # 使用 emptyDir 或 PVC 持久化数据- name: redis-configconfigMap:name: redis-config  # 通过 ConfigMap 加载配置文件
---
apiVersion: v1
kind: Service
metadata:name: redis-cluster
spec:selector:app: redis-clusterports:- protocol: TCPport: ***targetPort: *****nodePort: ****type: NodePort  # 使用 NodePort 类型

redis.conf

# redis-persistence.confsave 86400 1   appendonly no  

 1.5命令部署

由于之前已经部署过,所以先采用这两行命令停止redis的部署

将之前提供的yaml文件保存到服务器的自定义位置上,然后执行create命令

如果像下面这样我们就成功了! 

接下来我们试试可不可以使用redis客户端工具对我们的redis进行连接,这里我采用的是Redis Insight,
输入暴露出来的端口之后,成功连接!

    2.k8s部署mysql

    2.1目标

    同样由于服务器资源的限制,对于mysql我也只打算开一个单机版,能够使用mysql外部客户端进行连接,对于数据可以持久化保存

    2.2项目结构

    mysql-statefulset.yaml

    • 作用:定义 MySQL 的 StatefulSet,用于管理有状态的 MySQL Pod。

    mysqlpvc.yaml

    • 作用:定义 PersistentVolumeClaim (PVC),用于向 MySQL Pod 申请持久化存储。

    mysqlpv.yaml

    • 作用:定义 PersistentVolume (PV),用于提供实际的存储资源。

    2.3项目代码示例

    mysql-statefulset.yaml

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:name: mysql
    spec:serviceName: "mysql"replicas: 1selector:matchLabels:app: mysqltemplate:metadata:labels:app: mysqlspec:containers:- name: mysqlimage: mysql:oracleenv:- name: MYSQL_ROOT_PASSWORDvalue: ******ports:- containerPort: 3306volumeMounts:- name: mysql-datamountPath: /var/lib/mysqlvolumeClaimTemplates:- metadata:name: mysql-dataspec:accessModes: ["ReadWriteOnce"]resources:requests:storage: 10Gi
    ---
    apiVersion: v1
    kind: Service
    metadata:name: mysql
    spec:ports:- port: ****targetPort: ***nodePort: ****selector:app: mysqltype: NodePort

    mysqlpvc.yaml

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:name: mysql-data-mysql-0
    spec:accessModes:- ReadWriteOnceresources:requests:storage: 10GistorageClassName: standard  # 或者你集群中其他存储类的名称
    

    mysqlpv.yaml 

    apiVersion: v1
    kind: PersistentVolume
    metadata:name: mysql-pv
    spec:capacity:storage: 10GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: standardhostPath: path: /mnt/data/mysql

     2.4效果

    如下图所示便是成功

    2.5命令部署

    将上面的yaml文件保存到服务器之后执行create命令进行部署,需要先执行pv创建一个可以持久化的资源,之后再执行statefulset文件便成功部署!

    注意在执行我们的statefulset之后k8s便会根据我们的定义为我们创建一个默认的pvc来试图绑定资源,但我们采用了自定义的pv资源所以默认的pvc是绑定不到的,我们需要在这后面再次运行我们的pvcyaml文件将它的配置进行改变,

     

    如果能够帮助到你的话,可以留下一个免费的赞吗?:)

    题外话

    无状态应用是指应用的实例之间没有数据依赖,应用不需要保留用户的会话数据或持久化数据。

    特点
    • 无数据依赖:每个 Pod 都是独立的,处理完请求后不会存储任何状态数据。
    • 弹性伸缩方便:Pod 可以随意增加或减少,不需要考虑数据一致性。
    • 容易替换:Pod 重启或迁移不会影响应用的功能,因为所有数据都存储在外部(如数据库、缓存等)。
    • 常见场景
      • Web 服务器(如 Nginx、Apache)
      • 无状态 API 服务
      • 静态文件托管

    有状态应用是指应用的实例需要存储并维护自己的状态信息,通常需要持久化数据。

    特点
    • 数据依赖:应用需要保留会话数据或用户数据,数据通常存储在本地磁盘或持久化存储中。
    • 固定 Pod 标识:Pod 通常需要固定的标识(如名称),以确保数据和应用的关联性。
    • 复杂部署:需要考虑数据持久化、备份、恢复和一致性问题。
    • 常见场景
      • 数据库(如 MySQL、Redis、MongoDB)
      • 消息队列(如 Kafka、RabbitMQ)
      • 日志存储(如 Elasticsearch)

    如果还有啥错误的话,欢迎在评论区或者私信我!

    相关文章:

    (k8s)k8s部署mysql与redis(无坑版)

    0.准备工作 在开始之前,要确保我们的节点已经加入网络并且已经准备好,如果没有可以去看我前面发表的踩坑与解决的文章,希望能够帮到你。 1.k8s部署redis 1.1目标 由于我们的服务器资源较小,所以决定只部署一个redis副本&#x…...

    Git常用操作指令

    初始化配置 # 配置全局用户名和邮箱 git config --global user.name "账号" git config --global user.email "邮箱"# 查看配置信息 git config --list仓库初始化创建新的 Git 仓库: # 初始化新仓库 git init# 克隆远程仓库 git clone URL状态…...

    新手理解:Android 中 Handler 和 Thread.sleep 的区别及应用场景

    新手理解:Android 中 Handler 和 Thread.sleep 的区别及应用场景 Handler 是啥?Handler 的几个核心功能: Thread.sleep 是啥?Thread.sleep 的核心特点: 两者的区别它们的应用场景1. Handler 的应用场景2. Thread.sleep…...

    智能安全策略-DPL

    一、华三防火墙-接口的概念。 1、接口。 1. 什么是接口? 接口就像是防火墙的“门”,用来连接不同的网络设备,比如电脑、路由器、服务器等。通过这些“门”,数据(比如网页、视频、文件)才能进出防火墙。 …...

    差分进化算法 (Differential Evolution) 算法详解及案例分析

    差分进化算法 (Differential Evolution) 算法详解及案例分析 目录 差分进化算法 (Differential Evolution) 算法详解及案例分析1. 引言2. 差分进化算法 (DE) 算法原理2.1 基本概念2.2 算法步骤3. 差分进化算法的优势与局限性3.1 优势3.2 局限性4. 案例分析4.1 案例1: 单目标优化…...

    Alibaba Spring Cloud 十七 Sentinel熔断降级

    概述 在微服务架构中,熔断与降级是保证系统稳定性的重要机制,能有效防止故障蔓延或雪崩效应。当某个服务出现异常、延迟过高或错误率过高时,触发熔断保护,将该服务“隔离”一段时间,避免影响整体系统的吞吐和可用性。 …...

    LetsWave脑电数据简单ERP分析matlab(一)

    LetsWave是基于matlab的一款工具包,类似eeglab,也可以对数据进行预处理。习惯使用eeglab做数据预处理的,可以先在eeglab中做预处理,然后可以保存为*.set格式,最后在letswave中画图。 letswave下载地址:htt…...

    设计模式Python版 工厂方法模式

    文章目录 前言一、工厂方法模式二、工厂方法模式示例三、工厂方法模式客户端改进四、工厂方法模式隐藏工厂方法(可选) 前言 GOF设计模式分三大类: 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方…...

    贝叶斯优化相关

    贝叶斯优化相关 python中有很多模块支持贝叶斯优化,如bayesian-optimization、hyperopt,比较好用的是hyperopt,下面是对hyperopt文章的翻译,原文地址如下 https://districtdatalabs.silvrback.com/parameter-tuning-with-hyperop…...

    【Matlab高端绘图SCI绘图全家桶更新版】在原60种绘图类型基础上更新

    俗话说,一图胜千言。数据可视化便是将数据通过图形化的方式展现出来,它更加便于我们观察数据蕴含的的规律,洞察了数据蕴含的规律后,从而使我们能够做更好的进行科研表达和学术写作。 科研过程中,绘图是一项非常重要的…...

    如何构建一个 GraphRAG 系统

    构建一个 GraphRAG 系统以提升传统 RAG(检索增强生成)模型的性能,需要结合知识图谱和生成式语言模型的能力,以下是实现的关键步骤和方法: 1. 数据准备 (1) 收集数据 确保有足够的高质量文本数据源,如&…...

    代码随想录算法训练营day34

    代码随想录算法训练营 —day34 文章目录 代码随想录算法训练营前言一、62.不同路径动态规划动态规划空间优化 二、63. 不同路径 II动态规划动态规划优化空间版 三、343. 整数拆分动态规划贪心算法 96.不同的二叉搜索树总结 前言 今天是算法营的第34天,希望自己能够…...

    单片机基础模块学习——按键

    一、按键原理图 当把跳线帽J5放在右侧,属于独立按键模式(BTN模式),放在左侧为矩阵键盘模式(KBD模式) 整体结构是一端接地,一端接控制引脚 之前提到的都是使用了GPIO-准双向口的输出功能&#x…...

    polars as pl

    import polars as pl#和pandas类似,但是处理大型数据集有更好的性能. #necessary import pandas as pd#导入csv文件的库 import numpy as np#进行矩阵运算的库 #metric from sklearn.metrics import roc_auc_score#导入roc_auc曲线 #KFold是直接分成k折,StratifiedKFold还要考虑…...

    重构(4)

    (一)添加解释性变量,使得代码更容易理解,更容易调试,也可以方便功能复用 解释性的变量 总价格为商品总价(单价*数量)-折扣(超过100个以上的打9折)邮费(原价的…...

    神经网络|(三)线性回归基础知识

    【1】引言 前序学习进程中,已经对简单神经元的工作模式有所了解,这种二元分类的工作机制,进一步使用sigmoid()函数进行了平滑表达。相关学习链接为: 神经网络|(一)加权平均法,感知机和神经元-CSDN博客 神经网络|(二…...

    deepseek R1 高效使用学习

    直接提问 1、可以看到思考过程&#xff0c;可以当个学习工具 2、高效简介代码prompt <context> You are an expert programming AI assistant who prioritizes minimalist, efficient code. You plan before coding, write idiomatic solutions, seek clarification …...

    STM32_SD卡的SDIO通信_基础读写

    本篇将使用CubeMXKeil, 创建一个SD卡读写的工程。 目录 一、SD卡要点速读 二、SDIO要点速读 三、SD卡座接线原理图 四、CubeMX新建工程 五、CubeMX 生成 SD卡的SDIO通信部分 六、Keil 编辑工程代码 七、实验效果 实现效果&#xff0c;如下图&#xff1a; 一、SD卡 速读…...

    【Docker】私有Docker仓库的搭建

    一、准备工作 确保您的系统已安装Docker。如果没有安装&#xff0c;请参考Docker官方文档进行安装。 准备一个用于存储仓库数据的目录&#xff0c;例如/registry_data/。 二、拉取官方registry镜像 首先&#xff0c;我们需要从Docker Hub拉取官方的registry镜像。执行以下命…...

    linux 管道符、重定向与环境变量

    1. 输入输出重定向 在linux工作必须掌握的命令一文中&#xff0c;我们已经掌握了几乎所有基础常用的Linux命令&#xff0c;那么接下来的任务就是把多个命令适当的组合到一起&#xff0c;使其协同工作&#xff0c;会更高效的处理数据&#xff0c;做到这一点就必须搞清楚命令的输…...

    微信公众号模板消息推送实战:从配置到代码实现(PHP版)

    微信公众号模板消息推送实战&#xff1a;PHP开发全流程指南 在移动互联网时代&#xff0c;微信公众号已成为企业与用户沟通的重要桥梁。模板消息作为微信生态中的关键功能&#xff0c;能够实现精准、高效的信息触达。本文将带领PHP开发者从零开始&#xff0c;完整掌握模板消息推…...

    像素史诗惊艳效果展示:10份高质量研报生成过程与成品对比

    像素史诗惊艳效果展示&#xff1a;10份高质量研报生成过程与成品对比 1. 像素史诗&#xff1a;当AI研究遇上像素艺术 在数字内容创作领域&#xff0c;一款名为像素史诗(Pixel Epic)的工具正在重新定义研究报告的生成方式。这款基于AgentCPM-Report大模型构建的智能终端&#…...

    Go语言实现SHA256加密的避坑指南:从常量初始化到循环优化

    Go语言实现SHA256加密的避坑指南&#xff1a;从常量初始化到循环优化 在区块链、数字签名和密码保护等领域&#xff0c;SHA256算法因其高安全性被广泛应用。作为Go语言开发者&#xff0c;理解并正确实现SHA256加密不仅关乎功能实现&#xff0c;更直接影响系统性能和安全性。本文…...

    Windows音频路由终极指南:如何免费实现应用程序级音频设备管理

    Windows音频路由终极指南&#xff1a;如何免费实现应用程序级音频设备管理 【免费下载链接】audio-router Routes audio from programs to different audio devices. 项目地址: https://gitcode.com/gh_mirrors/au/audio-router 你是否曾遇到过这样的困扰&#xff1a;在…...

    Fiji在macOS系统的兼容性解决方案:从启动故障到配置优化的完整指南

    Fiji在macOS系统的兼容性解决方案&#xff1a;从启动故障到配置优化的完整指南 【免费下载链接】fiji A "batteries-included" distribution of ImageJ :battery: 项目地址: https://gitcode.com/gh_mirrors/fi/fiji Fiji作为科学图像处理领域广泛使用的"…...

    Video2X:用AI魔法将低分辨率视频变成4K超清大片的终极指南

    Video2X&#xff1a;用AI魔法将低分辨率视频变成4K超清大片的终极指南 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/v…...

    Phi-4-mini-reasoning在LSTM时间序列预测中的应用与优化

    Phi-4-mini-reasoning在LSTM时间序列预测中的应用与优化 1. 当传统预测遇上智能推理 时间序列预测一直是数据分析领域的经典难题。无论是股票价格波动还是商品销量变化&#xff0c;传统的LSTM模型虽然能捕捉时间依赖关系&#xff0c;但面对突发新闻事件或政策变化时&#xff…...

    别再死记硬背了!用74HC系列CMOS芯片,手把手带你理解逻辑门电平与噪声容限

    74HC系列CMOS芯片实战&#xff1a;从数据手册到面包板的逻辑门电平全解析 当你在深夜调试一块74HC04反相器搭建的振荡电路时&#xff0c;示波器上本该清晰的方波却出现了毛刺和畸变——这种场景对电子爱好者来说再熟悉不过。本文将以74HC系列CMOS芯片为核心&#xff0c;通过五…...

    实战指南|OpenWrt磁盘扩容全流程解析与避坑技巧

    1. 为什么需要给OpenWrt扩容&#xff1f; 很多朋友第一次接触OpenWrt时都会遇到一个尴尬的问题&#xff1a;系统默认分配的存储空间太小了。我自己刚开始用OpenWrt时也踩过这个坑&#xff0c;当时想装个Docker跑点服务&#xff0c;结果发现连最基本的镜像都拉不下来。这就像给…...

    NCM格式突破全攻略:从解密到跨平台播放的自由解锁方案

    NCM格式突破全攻略&#xff1a;从解密到跨平台播放的自由解锁方案 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 音乐作为数字生活的重要组成部分&#xff0c;却常常受到格式限制的困扰。网易云音乐的NCM加密格式就是其中典型代表&…...