k8s部署mysql数据持久化
在这里我部署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数据持久化的更多相关文章
- docker mysql 数据持久化到本地、设置不区别表名大小写-清风柳絮-51CTO博客
原文:docker mysql 数据持久化到本地.设置不区别表名大小写-清风柳絮-51CTO博客 Docker MySQL 把数据存储在本地目录,很简单,只需要映射本地目录到容器即可 1.加上-v参数 ...
- Named Volume 在 MySQL 数据持久化上的基本应用
原文作者:春哥 初识春哥时,春哥是美术设计大咖.后不久,创业并致力于游戏开发,已有3年.从Unity3D到IOS(Swift)开发,从前端开发到后端以及容器技术,从设计开发测试到产品经理以及CEO,已 ...
- k8s部署mysql主从复制
Mysql主从 准备环境 一,准备软件 官方docker_image :Mysql5.7.28 Docker Version: 19.03.4 K8s api-version: ...
- Web自动化框架之五一套完整demo的点点滴滴(excel功能案例参数化+业务功能分层设计+mysql数据存储封装+截图+日志+测试报告+对接缺陷管理系统+自动编译部署环境+自动验证false、error案例)
标题很大,想说的很多,不知道从那开始~~直接步入正题吧 个人也是由于公司的人员的现状和项目的特殊情况,今年年中后开始折腾web自动化这块:整这个原因很简单,就是想能让自己偷点懒.也让减轻一点同事的苦力 ...
- dcoker 安装mysql和数据持久化
# mysql 镜像下载 docker pull mysql ( 版本自己选择) # run 服务 docker run --name mysql.5.5 -p 3306:3306 -e MYSQ ...
- docker-compose一键部署redis一主二从三哨兵模式(含密码,数据持久化)
本篇基于centos7服务器进行部署开发 一.拉取redis镜像,使用如下命令 docker pull redis 1.查看镜像是否拉取成功,使用如下命令 docker images 显示如下则证明拉 ...
- Docker数据持久化及实战(Nginx+Spring Boot项目+MySQL)
Docker数据持久化: Volume: (1)创建mysql数据库的container docker run -d --name mysql01 -e MYSQL_ROOT_PASSWORD= my ...
- Centos8 部署 ElasticSearch 集群并搭建 ELK,基于Logstash同步MySQL数据到ElasticSearch
Centos8安装Docker 1.更新一下yum [root@VM-24-9-centos ~]# yum -y update 2.安装containerd.io # centos8默认使用podm ...
- seata服务端和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案
seata服务端和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案 说明: 之所以只用nacos进行了注册与发现,因为seata使用naco ...
随机推荐
- Prometheus+Grafana+kafka_exporter监控kafka
Prometheus+Grafana+kafka_exporter搭建监控系统监控kafka 一.Prometheus+Grafana+kafka_exporter搭建监控系统监控kafka 1.1K ...
- OpenStack (haproxy)
openstack部署脚本 链接:<https://pan.baidu.com/s/1BTp_tGNC6ZWwVmKkhwivgw > 提取码:jxuz haproxy 官网:< h ...
- Sublime text之中文乱码超简单解决方案
很多玩程序的小伙伴,刚开始使用Sublime Text神器软件时,都会遇到打开一个程序文件,里面的中文编程乱码,不知道怎么办,网上也有很多不同解决方案,这里小编跟大家分享一个超简单的办法. 打开文档后 ...
- LSTM机器学习生成音乐
目录 LSTM机器学习生成音乐 数据集介绍 将mid转成note数组 将note数组转成mid文件 获取数据集并将其保存 将note进行编号 构建数据集 截取数据 进行one-hot编码 构建模型 训 ...
- Java工作中的并发问题处理方法总结
Java工作中常见的并发问题处理方法总结 好像挺久没有写博客了,趁着这段时间比较闲,特来总结一下在业务系统开发过程中遇到的并发问题及解决办法,希望能帮到大家 问题复现 1. "设备Aの奇怪分 ...
- HDU - 2328 Corporate Identity(kmp+暴力)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2328 题意:多组输入,n==0结束.给出n个字符串,求最长公共子串,长度相等则求字典序最小. 题解:(居 ...
- hdu4507吉哥系列故事——恨7不成妻 (数位dp)
Problem Description 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: ...
- Network of Schools POJ - 1236 有向强连通图
//题意://给你n个学校,其中每一个学校都和一些其他学校有交流,但是这些边都是单向的.你至少需要给几个学校//传递消息可以使全部学校都收到消息,第二问你最少添加几条边可以使它变成一个强连通图//题解 ...
- HDU 3605 Escape 最大流
题意: 如果这是2012年世界末日怎么办?我不知道该怎么做.但是现在科学家们已经发现,有些星球上的人可以生存,但有些人却不适合居住.现在科学家们需要你的帮助,就是确定所有人都能在这些行星上生活.输入多 ...
- EFCore学习记录--数据访问技术人门2
1 code fist 1.创建实体类: 2.创建DbContext类: mysql连接字符串是:Server=127.0.0.1;Port=3306;Database=BlogDb; User=ro ...