在这里我部署mysql的目的是为了后面将上一篇博客docker打包的el-admin镜像部署到k8s上,所以本文主要是部署mysql并实现持久化。

1.将我们的应用都部署到 el-admin 这个命名空间下面,创建eladmin-namespace.yaml 文件

apiVersion: v1
kind: Namespace
metadata:
name: el-admin

2.创建存储文件路径

[root@m ~]# mkdir -p /nfsdata/mysql
# 授权
[root@m ~]# chmod -R 777 /nfsdata/mysql
# m节点上修改文件
[root@m ~]# vi /etc/exports
/nfsdata *(rw,sync,no_root_squash)
# m节点上重新挂载
[root@m mysql]# exportfs -r
# m节点上启动
[root@m ~]# systemctl start rpcbind && systemctl enable rpcbind
[root@m ~]# systemctl start nfs && systemctl enable nfs
# 其他节点上启动
[root@w1 ~]# systemctl start nfs
# m节点上查看
[root@m ~]# showmount -e
Export list for m:
/nfsdata *

3.编写el-admin-mysql.yaml

apiVersion: v1
kind: ReplicationController
metadata:
name: el-admin-mysql-rc
namespace: el-admin
labels:
name: el-admin-mysql-rc
spec:
replicas: 1
selector:
name: el-admin-mysql-rc
template:
metadata:
labels:
name: el-admin-mysql-rc
spec:
containers:
- name: mysql
image: mysql
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "root"
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql #MySQL容器的数据都是存在这个目录的,要对这个目录做数据持久化
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: el-admin-mysql-pvc #指定pvc的名称 ---
apiVersion: v1
kind: Service
metadata:
name: el-admin-mysql-svc
namespace: el-admin
labels:
name: el-admin-mysql-svc
spec:
type: NodePort
ports:
- port: 3306
protocol: TCP
targetPort: 3306
name: http
nodePort: 3306
selector:
name: el-admin-mysql-rc ---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: el-admin-mysql-ingress
namespace: el-admin
spec:
rules:
- host: eladmin.charon.com
http:
paths:
- path: /
backend:
serviceName: el-admin-mysql-svc
servicePort: 3306 ---
apiVersion: v1
kind: PersistentVolume
metadata:
name: el-admin-mysql-pv
namespace: el-admin
spec:
capacity:
storage: 2Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Recycle
storageClassName: nfs
nfs:
path: /nfsdata/mysql
server: 192.168.189.153 ---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: el-admin-mysql-pvc
namespace: el-admin
spec:
accessModes:
- ReadWriteMany
storageClassName: nfs
resources:
requests:
storage: 2Gi

4.创建mysql的服务

[root@m el-admin]# kubectl create -f el-admin-mysql.yaml

5.查看pod,因为是在el-admin的命名空间下,所以查询pod的时候需要指定命名空间

[root@m ~]# kubectl get pods -n el-admin -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
el-admin-mysql-rc-9p7wf 1/1 Running 1 151m 192.168.190.124 w1 <none> <none>

从上图可以看到,mysql的pod是在w1节点上,即192.168.189.155这个节点。这个时候我们使用navicat连接mysql,肯定是连接不成功的,如下图所示:

6.进入容器

[root@m el-admin]# kubectl exec -it el-admin-mysql-rc-9p7wf /bin/bash
# 登录mysql
root@el-admin-mysql-rc-9p7wf:/# mysql -u root -p
# 输入密码,密码为上门pod中配置的root

查询mysql的用户,

mysql> select host,user,plugin,authentication_string from mysql.user;

为用端口为'%'用户为root的用户密码设置为root。

mysql> alter user 'root'@'%' identified with mysql_native_password by'root';

设置完成后,重新连接,即可连接成功。

上门的文档里配置了ingress,ingress可以配置提供外部可访问的URL。

 # 修改windows的host文件,目录:C:\Windows\System32\drivers\etc
# 添加内容
192.168.189.155 eladmin.charon.com

使用eladmin.charon.com这个域名也可以连接成功

连接成功后,在navicat里面创建一个eladmin的数据库,在k8s上的mysql挂载目录下查看新建的eladmin的数据库目录。

到这里,k8s部署mysql,并将数据持久化到宿主机上就完成了。

参考文件:

kubernetes部署mysql:https://www.cnblogs.com/zoulixiang/p/9910337.html

k8s部署mysql数据持久化的更多相关文章

  1. docker mysql 数据持久化到本地、设置不区别表名大小写-清风柳絮-51CTO博客

    原文:docker mysql 数据持久化到本地.设置不区别表名大小写-清风柳絮-51CTO博客 Docker MySQL 把数据存储在本地目录,很简单,只需要映射本地目录到容器即可 1.加上-v参数 ...

  2. Named Volume 在 MySQL 数据持久化上的基本应用

    原文作者:春哥 初识春哥时,春哥是美术设计大咖.后不久,创业并致力于游戏开发,已有3年.从Unity3D到IOS(Swift)开发,从前端开发到后端以及容器技术,从设计开发测试到产品经理以及CEO,已 ...

  3. k8s部署mysql主从复制

    Mysql主从 准备环境 一,准备软件 官方docker_image :Mysql5.7.28 Docker Version:        19.03.4 K8s api-version:      ...

  4. Web自动化框架之五一套完整demo的点点滴滴(excel功能案例参数化+业务功能分层设计+mysql数据存储封装+截图+日志+测试报告+对接缺陷管理系统+自动编译部署环境+自动验证false、error案例)

    标题很大,想说的很多,不知道从那开始~~直接步入正题吧 个人也是由于公司的人员的现状和项目的特殊情况,今年年中后开始折腾web自动化这块:整这个原因很简单,就是想能让自己偷点懒.也让减轻一点同事的苦力 ...

  5. dcoker 安装mysql和数据持久化

    # mysql 镜像下载 docker pull mysql ( 版本自己选择)   # run 服务 docker run --name mysql.5.5 -p 3306:3306 -e MYSQ ...

  6. docker-compose一键部署redis一主二从三哨兵模式(含密码,数据持久化)

    本篇基于centos7服务器进行部署开发 一.拉取redis镜像,使用如下命令 docker pull redis 1.查看镜像是否拉取成功,使用如下命令 docker images 显示如下则证明拉 ...

  7. Docker数据持久化及实战(Nginx+Spring Boot项目+MySQL)

    Docker数据持久化: Volume: (1)创建mysql数据库的container docker run -d --name mysql01 -e MYSQL_ROOT_PASSWORD= my ...

  8. Centos8 部署 ElasticSearch 集群并搭建 ELK,基于Logstash同步MySQL数据到ElasticSearch

    Centos8安装Docker 1.更新一下yum [root@VM-24-9-centos ~]# yum -y update 2.安装containerd.io # centos8默认使用podm ...

  9. seata服务端和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案

    seata服务端和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案 说明: 之所以只用nacos进行了注册与发现,因为seata使用naco ...

随机推荐

  1. 算法总结篇---AC自动机

    目录 写在前面 算法流程 引例: 概述: Trie树的构建(第一步) 失配指针(第二步) 构建失配指针 字典树和字典图 多模式匹配 例题 写在前面 鸣谢: OiWiki 「笔记」AC 自动机---Lu ...

  2. 《我想进大厂》之Zookeeper夺命连环9问

    谈谈你对Zookeeper的理解? Zookeeper是一个开源的分布式协调服务,由雅虎公司创建,由于最初雅虎公司的内部研究小组的项目大多以动物的名字命名,所以后来就以Zookeeper(动物管理员) ...

  3. MySQL按照(windows)及常用命令

    MySQL语法规则 关键字与函数名称全部大写 数据库名称.表名称.字段名称全部小写 SQL 语句必须以分号结尾 MySQL安装 MySQL配置: 在cmd中输入 mysql,提示['mysql' 不是 ...

  4. Java 性能调优的 11 个实用技巧

    大多数开发人员认为性能优化是个比较复杂的问题,需要大量的经验和知识.是的,这并不没有错.诚然,优化应用程序以获得最好的性能并不是一件容易的事情,但这并不意味着你在没有获得这些经验和知识之前就不能做任何 ...

  5. eclipse中Tomcat修改项目名称

    1.打开你的项目目录,找到一个.project文件,打开后修改<name> test</name>中的值,将test修改成你要修改的名字: 2.在项目目录下,打开.settin ...

  6. 设计模式(九)——装饰者模式(io源码分析)

    1 星巴克咖啡订单项目(咖啡馆): 1) 咖啡种类/单品咖啡:Espresso(意大利浓咖啡).ShortBlack.LongBlack(美式咖啡).Decaf(无因咖啡) 2) 调料:Milk.So ...

  7. Scrambled Polygon POJ - 2007 极角排序

    题意: 给你n个点,这n个点可以构成一个多边形(但是不是按顺序给你的).原点(0,0)为起点,让你按顺序逆序输出所有点 题解: 就是凸包问题的极角排序 用double一直Wa,改了int就可以了 // ...

  8. P1073 最优贸易(最短路)

    题目描述 CC C国有n n n个大城市和m mm 条道路,每条道路连接这 nnn个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这 mmm 条道路中有一部分为单向通行的道路,一部分为 ...

  9. java——字符串常量池、字符串函数以及static关键字的使用、数组的一些操作函数、math函数

    字符串常量池: 字符串比较函数:  字符串常用方法:  字符串截取函数: 字符串截取函数:  static关键字使用: 要调用类中的static类型的变量的时候,可以用"类名.变量名&quo ...

  10. NCD 2019 H. Mr. Hamra and his quantum particles

    题意:给你n个数,有m次操作,每次使得两个数相连接,询问q次,问某两个数是否连接在一起. 题解:这其实是一道并查集的裸题,这里就不再多说了,写个路径压缩的find函数即可. 代码: #include ...