当前位置: 首页 > 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;做到这一点就必须搞清楚命令的输…...

    AI赋能5G核心网故障诊断:从PCAP解析到智能根因分析的工程实践

    1. 项目概述&#xff1a;当AI遇见5G核心网故障诊断在5G核心网的运维与测试一线干了这么多年&#xff0c;最头疼的莫过于面对海量的PCAP抓包文件。一个复杂的信令流程下来&#xff0c;动辄几千甚至上万个数据包&#xff0c;工程师需要像侦探一样&#xff0c;逐帧审视协议交互&am…...

    DeepSeek系统设计辅助:如何在48小时内完成可审计、可回滚、可压测的AI服务架构图?

    更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek系统设计辅助 DeepSeek系统设计辅助模块面向架构师与后端工程师&#xff0c;提供模型能力调用、接口契约生成、异步任务编排等核心支撑能力。该模块不替代人工设计决策&#xff0c;而是通过结构…...

    别急着扔!12年老ThinkPad X230升级SSD和内存后,Win10流畅得像新电脑

    12年老ThinkPad X230重生指南&#xff1a;极简升级打造流畅办公利器每次打开抽屉看到那台积灰的ThinkPad X230&#xff0c;总有种说不出的情感。这款2012年问世的经典商务本&#xff0c;曾陪伴无数人度过加班到凌晨的夜晚。如今性能确实有些力不从心&#xff0c;但直接丢弃又觉…...

    CUDA并行计算与FSR框架优化实践

    1. CUDA并行计算与FSR框架概述在GPU加速计算领域&#xff0c;CUDA&#xff08;Compute Unified Device Architecture&#xff09;作为NVIDIA推出的并行计算平台和编程模型&#xff0c;已经成为高性能计算的事实标准。其核心设计理念是将计算任务分解为网格&#xff08;Grid&…...

    Taotoken的审计日志功能为企业API安全与合规管理提供支持

    &#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken的审计日志功能为企业API安全与合规管理提供支持 当企业决定将大模型能力集成到内部业务流程中时&#xff0c;IT管理员和安…...

    1688运营培训/询盘成本从500元降到63.9!1688运营培训还原1688真实玩法

    1688运营培训/询盘成本从500元降到63.9&#xff01;1688运营培训还原1688真实玩法500块钱一个询盘&#xff0c;你敢信&#xff1f;做1688运营培训这么多年&#xff0c;这个数字我都觉得离谱。前阵子遇到一个老板&#xff0c;一上来就开始吐槽1688&#xff0c;说1688就是个垃圾平…...

    保姆级教程:在Ubuntu上配置Frida环境,搞定Android App的IO重定向与签名绕过

    在Ubuntu上构建Android逆向工程环境&#xff1a;Frida实战与IO重定向技术解析 对于习惯Linux环境的安全研究人员而言&#xff0c;Windows-centric的逆向工具链往往带来诸多不便。本文将系统性地介绍如何在Ubuntu上搭建完整的Android逆向环境&#xff0c;并深入探讨如何利用Frid…...

    LeagueAkari:基于LCU接口的英雄联盟客户端自动化工具深度解析

    LeagueAkari&#xff1a;基于LCU接口的英雄联盟客户端自动化工具深度解析 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 功能模块架构与核心技…...

    AI Agent 为什么必须有“记忆系统”?

    导语&#xff1a;大模型不是没有智商&#xff0c;而是经常没有“记性”。真正能长期干活的 Agent&#xff0c;不是靠无限拉长上下文&#xff0c;而是靠一套会压缩、会检索、会遗忘、会治理的外置记忆系统。一、先给结论&#xff1a;Agent 的记忆系统&#xff0c;本质是“上下文…...

    DSP、FPGA、STM32大对决:谁才是嵌入式开发的“天选之子”?

    在嵌入式开发的广阔天地里&#xff0c;DSP、FPGA 和 STM32&#xff08;作为通用 MCU 的典型代表&#xff09;可以说是三款绕不开的核心处理器。很多初学者甚至有一定经验的工程师在选择时都会陷入纠结&#xff1a;我的项目到底该选哪一个&#xff1f;为了帮你彻底理清思路&…...