k8s部署mysql

2023-10-27

注意事项

其实mysql这种应用我还是不建议挂到k8s中,因为我是学习使用,使用的vmvare开了3台虚拟linux,因为k8s对配置要求较高,如果太低的话会出现pod部署失败等配置问题,建议还是只在k8s部署springcloud项目的jar包

  1. 因为是容器化部署,如果默认配置的话可能会出现下面问题:重启docker容器,mysql存储的数据都没了,还有mysql登录密码都需要在docker运行mysql镜像的时候指定。

  2. 因为k8s为了保证可用性,如果在节点A上部署的mysql宕机了,可能会在B节点上重新部署mysql,这样的话之前保存的数据都流失了。所以需要指定启动参数。

  3. 我自己的k8s部署环境配置信息:
    * 在192.168.192.131部署node131 (k8s的master+工作节点)
    * 在192.168.192.132部署node132 (k8s的工作节点)


正片开始!

1. 确定mysql镜像包

我使用的是daocloud镜像仓库,下载了最新版的mysql镜像包拉取pull下来存到本地私有仓库,只是镜像地址:daocloud.io/library/mysql:5.7.5-m15

2. 创建namespace.yaml文件

apiVersion: v1 #类型为Namespace
kind: Namespace  #类型为Namespace
metadata:
  name: ssx-ns  #命名空间名称
  labels:
    name: lb-ssx-ns  

然后应用到k8s中
kubectl create -f ./namespace.yaml

3. 创建deployment.yaml文件

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: mysql #为该Deployment设置key为app,value为mysql的标签
  name: ssx-mysql-dm
  namespace: ssx-ns
spec:
  replicas: 1 
  selector: #标签选择器,与上面的标签共同作用
    matchLabels: #选择包含标签app:mysql的资源
      app: mysql
  template: #这是选择或创建的Pod的模板
    metadata: #Pod的元数据
      labels: #Pod的标签,上面的selector即选择包含标签app:mysql的Pod
        app: mysql
    spec: #期望Pod实现的功能(即在pod中部署)
      containers: #生成container,与docker中的container是同一种
      - name: ssx-mysql-c
        image: 192.168.1.130:5000/ssx-mysql:v1.0 #使用镜像 此处的镜像地址是我自己的私有镜像仓库,该mysql镜像其实是daocloud.io/library/mysql:5.7.5-m15的重新打tag
        ports:
        - containerPort: 3306  # 开启本容器的80端口可访问
        volumeMounts:
        - mountPath: /var/lib/mysql #这是mysql容器内保存数据的默认路径
          name: c-v-path
        - mountPath: /etc/localtime
          name: c-v-path-time
        env:   #容器运行前需设置的环境变量列表
        - name: MYSQL_ROOT_PASSWORD  #环境变量名称
          value: "1" #环境变量的值 这是mysqlroot的密码 因为是纯数字,需要添加双引号 不然编译报错
      volumes:
      - name: c-v-path #和上面保持一致 这是本地的文件路径,上面是容器内部的路径
        hostPath:
          path: /root/apps/k8s/for_docker_volume/mysql #此路径需要实现创建
      - name: c-v-path-time #和上面保持一致 这是本地的文件路径,上面是容器内部的路径
        hostPath:
          path: /etc/localtime #此路径需要实现创建
      nodeSelector: #把此pod部署到指定的node标签上
        kubernetes.io/hostname: node131

然后应用到k8s中
kubectl create -f ./deployment.yaml

4. 创建service.yaml文件

apiVersion: v1
kind: Service
metadata:
  labels:
   app: mysql
  name: ssx-mysql-sv
  namespace: ssx-ns
spec:
  ports:
  - port: 9000 #我暂时不理解,这个设置 明明没用到?
    name: ssx-mysql-last
    protocol: TCP
    targetPort: 3306 # 容器nginx对外开放的端口 上面的dm已经指定了
    nodePort: 31090 #外网访问的端口
  selector:
    app: mysql
  type: NodePort

然后应用到k8s中
kubectl create -f ./service.yaml

5. 等待pod部署完成,大概几分钟,然后就可访问mysql,这里mysql连接信息:192.168.192.131:31090

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

k8s部署mysql 的相关文章

  • 如何检查docker中当前/默认的日志驱动程序?

    我正在尝试检查已停止的 docker 容器的日志 但是当我这样做时docker logs
  • 无法使用 Django 应用程序从容器连接到 MySQL docker 容器

    当我尝试从运行 Django 应用程序的 docker 容器连接到运行 MySQL 的容器时 出现以下错误 django db utils OperationalError 2003 Can t connect to MySQL serve
  • C#:SQL 查询生成器类

    在哪里可以找到好的 SQL 查询构建器类 我只需要一个简单的类来构建 SQL 字符串 仅此而已 我需要它用于 C 和 MySql 我真的不需要像 Linq 或 NHibernate 这样的东西 谢谢 由于 Google 将我引导至此页面 我
  • PHP PDO相关:更新SQL语句未更新数据库内容

    我正在尝试使用准备好的语句来实现更新语句PHP http en wikipedia org wiki PHP脚本 但它似乎没有更新数据库中的记录 我不确定为什么 所以如果您能分享一些见解 我将不胜感激 Code query UPDATE D
  • 在 MacOSX10.6 上运行 python 服务器时 MySQLdb 错误

    运行我的服务器 python manage py runserver 产生以下错误 django core exceptions ImproperlyConfigured 加载 MySQLdb 模块时出错 没有名为 MySQLdb 的模块
  • ActiveRecord3死锁重试

    Rails 3 或 ActiveRecord 3 是否有任何插件可以复制旧版本死锁重试 http agilewebdevelopment com plugins deadlock retry插入 或者 该插件仍然适用于 Rails 3 吗
  • 应用程序移至 Docker 生产环境时 Flask-WTF CSRF 验证失败

    我刚刚为我一直在开发的 Flask 应用程序设置了生产环境 这个堆栈是 Windows Server 2012 R2 Hyper V VM Running Ubuntu 14 04 Docker 1 5 Running Containers
  • 为什么 MySQL 创建带有 _seq 后缀的表?

    我创建了一个 InnoDB 表 名为foo在 MySQL 中 一旦我对表执行插入操作 我就会看到另一个表foo seq被建造 如果我删除自动生成的表 它会在下一次插入后出现 是什么原因造成的 听起来像是正在创建一个序列 您是否有自动生成的主
  • 无法启动 MySQL 服务器 - 控制进程退出并出现错误代码

    我的 mysql 服务器停止后无法启动 命令使用 sudo etc init d mysql restart Error 重新启动 mysql 通过 systemctl mysql serviceJob for mysql service
  • 查询中列的顺序重要吗?

    当从 MySQL 表中选择列时 与表中的顺序相比 选择列的顺序是否会影响性能 不考虑可能覆盖列的索引 例如 您有一个包含行 uid name bday 的表 并且有以下查询 SELECT uid name bday FROM table M
  • MYSQL - 查找最近的前一天

    我可以以某种方式 不使用 PHP 找到一周中最近的前一天日期吗 Like 最近的上一个星期二的日期是哪一天 CURDATE INTERVAL WEEKDAY CURDATE wday IF WEEKDAY CURDATE gt wday 0
  • mysql-如何向列申请补助?

    用户名 撤销对数据库的选择 Person I set GRANT SELECT id ON database Person TO username localhost 不是工作 gt SELECT secret FROM Person Go
  • 在 docker 中重定向命令输出

    我想为我的服务器做一些简单的日志记录 它是一个在 Docker 容器中运行的小型 Flask 应用程序 这是 Dockerfile Dockerfile FROM dreen flask MAINTAINER dreen WORKDIR s
  • MySQL Connector/C++ 库链接错误问题

    PROBLEM 好吧 我一直在尝试遵循 MySQL Forge Wiki 和其他一些网站上的示例代码 这些网站提供了有关如何获得简单数据库连接的教程 但由于某种原因 我的项目总是因链接错误而失败 我可以我自己不明白为什么或如何解决它 我仍在
  • docker repo 解决映像构建期间的错误错误(检查存储库文件)

    我在构建 docker 映像时遇到问题 并尝试了不同的 DNS 选项 但似乎运气不佳 Docker版本1 9 1 构建a34a1d5 回购还活着 为了运行我使用的容器docker run dns 192 168 1 1 d ti name
  • MYSQL 区分大小写的 utf8 搜索(使用 hibernate)

    我的登录表具有 utf8 字符集和 utf8 排序规则 当我想要检查用户名并检索该特定用户名的其他信息时 hql 查询会为我提供小写和大写相同的结果 我应该如何处理适用于案例的 HQL 查询 我使用 Mysql 5 和 java hiber
  • 如何正确转义mysql?

    我刚刚发现如果我写 select from tbl where name like foo 然后添加 foo 作为参数及其值 a 用户数据 它不会正确转义 我勒个去 它想要 a 即使我使用参数 我还是忍不住觉得我对 sql 注入持开放态度
  • 在没有 noexec 选项的情况下将卷挂载到 docker 容器中

    据我所知 docker 也包括 docker compose 使用 noexec 选项将卷安装到容器中 因此我无法从安装的目录中启动任何程序 services app build context dockerfile Dockerfile
  • MySQL MIN/MAX 所有行

    我有桌子Races与行ID Name and TotalCP 我选择分钟 TotalCP FROM Races 但是我想选择具有最小值的整行 我如何在单个查询中做到这一点 从聚合值获取整行的一般形式是 SELECT FROM Races W
  • 将古吉拉特语文本插入 MySQL 表会产生垃圾字符和不可读的文本

    我有三个 MySQL 表 我正在向其中插入古吉拉特语内容 当我插入两个表时 它们插入得很好并且可读 但在一个表中 它显示垃圾字符 不可读的文本 我怎样才能解决这个问题 MySQL 有每个表的字符集设置 http dev mysql com

随机推荐

  • 论文笔记-损失函数之SSIM

    损失函数用来鼓励和抑制某些行为 在深度学习中 如果是分类问题 则可以用交叉熵 softmax SVM等损失函数 如果是回归问题 则代价函数普遍采用L2 或者L1 由于L2 即用真值和预测值的欧氏距离 是一个非凸形式且可导 但L2的使用前提是
  • Vue 读取本地静态文件 json【很全,很详细】

    所有文章优先发布在个人博客上 后续更新可能会忘记同步到CSDN上 给你带来不便抱歉 个人博客此篇文章 https www xdx97 com article 654798704103915520 方法一 require 格式 var jso
  • Sudoku POJ - 2676 题解

    原题 Sudoku is a very simple task A square table with 9 rows and 9 columns is divided to 9 smaller squares 3x3 as shown on
  • leetcode3-最长无重复子串

    原题链接 leetcode3 题目描述 在字符串s中计算最长无重复的子串 思路一 采用双指针的方法处理 开始和结束指针 结束指针从头往后遍历一遍 遍历的过程中当前这个元素如果在这个子串中 开始指针重新计算 开始指针加上移动的元素个数 没有在
  • 调试OV2735总结

    调试找到的问题 1 开始调试的时候因为之前的工程师原理图和BOM出错 导致本来是2 8V电压的焊接的是1 8V的LDO所以这个是第一个问题 2 因为FAE反应说sensor没有反应I2C没有通信 所以检查了原理图发现 I2C有读地址和写地址
  • 快速计算子网掩码和主机数

    一 明确概念 在介绍十进制算法前我们先要明确一些概念 A类地址 IP地址常采用点分十进制表示方法X Y Y Y 在这里 X在1 126范围内称为A类 比如10 202 52 130 因为X为10 在1 126范围内 所以称为A类地址 B类地
  • 终于等到你!Guitar Pro 8.1版本简谱功能首发

    Guitar Pro是一款非常流行的音乐制谱软件它不仅适用于吉他谱还可以用于其他乐器的制谱 历经5年多时间研发Guitar Pro 在2022年正式发布了全新的8系列版本时隔不到1年Guitar Pro又给广大中国用户带来期盼已久的简谱功能
  • 使用 Easy Excel 插件实现Excel文件高效导入导出接口

    目录 简介 导入功能实现 1 添加依赖 2 创建导入的实体类 DTO 3 服务接口中创建一个用于导入的方法 4 编写监听器处理数据 5 在服务类中实现导出方法 6 控制器层调用 7 调用接口 导出功能实现 1 创建用于导出的实体类 VO 2
  • nuxt在pages下建文件,本地能访问,线上404不能访问

    以下网址都是虚拟网址 ip 在官网开发过程中 要重构页面 将 官网介绍 页面 从PHP的模板tpl 改为前后端分离的形式 nuxt在pages下新建Vue文件 就能直接生成路径 我在pages 下新建了view doctor vue 文件
  • 三环控制永磁同步电机

    2 双闭环模型 3 三闭环模型 输入可以给定一个正弦波或者阶跃信号作为位置给定 下载连接 https download csdn net download weixin 42226781 87420823
  • 【翻译】燃烧积压,调整流程

    排列和流动 听起来像Vinyasa瑜伽课 它们真正的内容是管理的趋势 但即使是管理这个词似乎也不对 因为当你在管理对齐和流动时 你是有意放弃你的大部分权力 你走的是仆人式领导的道路 不断寻找方法让你的队友生活更轻松 最大限度地提高流量和一致
  • opencv安装教程(通用过程说明)

    文章目录 环境说明 安装方式说明 预编译版本 从OpenCV团队获取 从第三方开发者获取 从源码编译 步骤0 安装准备 步骤1 获取源代码 步骤2 配置构建环境 步骤3 构建 步骤4 安装 可选 步骤5 构建插件 可选 环境说明 语言 c
  • 多维时序

    多维时序 MATLAB实现CNN BiLSTM多变量时序预测 目录 多维时序 MATLAB实现CNN BiLSTM多变量时序预测 基本介绍 模型特点 程序设计 关联分析 学习总结 参考文献 基本介绍 本次运行测试环境MATLAB2020b
  • ORA-01578 ORACLE data block corrupted

    我们用户连接到数据库执行存储过程时报坏块ORA 01578ORACLE data block corrupted错误 从错误提示信息来看 确实该数据库遭遇到坏块 通过查询数据字典 如下图 SQL gt select from V DATAB
  • Python3多线程_thread模块的应用

    文章目录 前言 一 Python3多线程 二 thread模块 1 单线程 2 多线程 总结 前言 参考文章 Python多线程 thread和Threading Python3 多线程 Python3通过两个标准库 thread 和 th
  • java利用递归删除文件夹(以及里面的文件和子文件夹)

    1 在main方法中使用Scanner工具类从控制台获取String类型的地址 2 将获取的地址转变为File类型 3 创建一个删除方法 删除文件夹首先要获取该文件夹下的所有文件和文件夹数组 然后遍历数组 在遍历过程中判断是否为文件 如果是
  • Anaconda使用记录(一):管理conda

    写在前面 由于本人使用的是windows用户 因此关于本专栏的使用记录主要是对基于win的一些命令进行笔记 Windows用户打开 Anaconda Prompt 右击以管理员身份运行 并在此界面进行操作 管理conda 1 检验conda
  • 超级详细 的 Vmware下载 与 安装过程

    如何配置多个操作系统 超级详细 的 Vmware下载 与 安装过程 一 引言 在项目开发中经常需要 进行项目部署 有时不想买多台服务器 增加不必要的预算 那有什么方案解决这类型的问题呢 这个是一个好问题 那就行了我们就来介绍其中一种方法 V
  • java连不上sql表_Java与数据库的多表连接不能进行

    package cn com import java sql public class Order public void TradeResult String s Connection con PreparedStatement stmt
  • k8s部署mysql

    注意事项 其实mysql这种应用我还是不建议挂到k8s中 因为我是学习使用 使用的vmvare开了3台虚拟linux 因为k8s对配置要求较高 如果太低的话会出现pod部署失败等配置问题 建议还是只在k8s部署springcloud项目的j