k8s实战之MySQL单实例部署
前面我们学习了k8s入门系列文章,了解了k8s的一些基础概念以及怎么使用。本篇文章将进行一个小小的实战,使用k8s来部署单机版的mysql数据库,基本涵盖到前面讲到的Namespace、Pod、Deployment、Service、PV、PVC、Secret等资源对象。
我们先画一张结构图来表示整个部署的逻辑流程,如图所示:
一、一步一步来规划
1.创建namespace,把mysql部署在单独的名称空间中
名称空间的用法可以参考文章:k8s入门之namespace(三)
kubectl create namespace dev
2.创建持久卷PV,用来存储mysql数据文件
PV的用法可以参考文章:k8s入门之PV&PVC(八)
(1)定义一个容量大小为1GB的PV,挂载到/nfs/data/01目录,需手动创建该目录
mkdir -p /nfs/data/01
(2)编写mysql-pv.yaml文件内容,要创建的pv对象名称:pv-1gi
# 定义持久卷信息
apiVersion: v1
kind: PersistentVolume
metadata:
# pv是没有namespace属性的,它是一种跨namespace的共享资源
name: pv-1gi
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
# 存储类,具有相同存储类名称的pv和pvc才能进行绑定
storageClassName: nfs
nfs:
path: /nfs/data/01
server: 192.168.59.110
(3)创建该PV对象
kubectl create -f mysql-pv.yaml
(4)查看创建结果
3.创建持久卷声明PVC
PVC的用法可以参考文章:k8s入门之PV&PVC(八)
声明存储大小为1Gb的PVC资源,k8s会根据storageClassName存储类名称找到匹配的PV对象进行绑定。
(1)编写mysql-pvc.yaml文件内容,要创建的pvc对象名称是:mysql-pvc
# 定义mysql的持久卷声明信息
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pvc
namespace: dev
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
# 存储类,具有相同存储类名称的pv和pvc才能进行绑定
storageClassName: nfs
(2)创建该PVC对象
kubectl create -f mysql-pvc.yaml
(3)查看创建结果
可以看到mysql-pvc对象已经和pv-1gi对象绑定上了。
4.创建Secret对象用来保存mysql的root用户密码
Secret的用法可以参考文章:k8s入门之Secret(十)
(1)设置密码为123456,执行创建命令
kubectl create secret generic mysql-root-password --from-literal=password=123456 -n dev
(2)查看创建结果
5.创建Deployment和Service
Deployment的用法可以参考文章:k8s入门之Deployment(五)
Service的用法可以参考文章:k8s入门之Service(六)
(1)编辑mysql-svc.yaml文件内容
service使用NodePort类型,指定暴露的nodePort端口为31234,我们会在宿主机使用navicat客户端对mysql进行访问
# 定义mysql的Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: mysql
name: mysql
namespace: dev
spec:
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- image: mysql:8.0
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-root-password
key: password
# 如果你不想使用secret对象保存mysql登录密码,可以直接使用下面的方式指定,简单粗暴未尝不可
#value: "123456"
ports:
- containerPort: 3306
volumeMounts:
- name: mysqlvolume
mountPath: /var/lib/mysql
volumes:
- name: mysqlvolume
# 使用pvc
persistentVolumeClaim:
claimName: mysql-pvc
---
#定义mysql的Service
apiVersion: v1
kind: Service
metadata:
labels:
app: svc-mysql
name: svc-mysql
namespace: dev
spec:
selector:
app: mysql
type: NodePort
ports:
- port: 3306
protocol: TCP
targetPort: 3306
nodePort: 31234
(2)执行创建命令
kubectl create -f mysql-svc.yaml
(3)查看创建结果
可以看到mysql的pod已处于运行状态
二、测试
在宿主机通过Navicat客户端来连接部署好的mysql服务,IP是三台虚拟节点的任意一台IP,端口是在创建Service时手动指定的31234。
1.连接数据库服务
2.创建数据库与表数据
3.查看nfs目录
4.你可以删掉服务,然后重新创建,之前的mysql数据并不会丢失
k8s实战之MySQL单实例部署的更多相关文章
- Oracle 19c单实例部署
目录 Oracle 19c单实例部署: 1.配置yum: 2.安装rpm包: 3.设置hostname: 4.配置hostname解析: 5.配置时钟同步服务(ntp): 6.检查及配置内核参数: 7 ...
- 单台主机MySQL多实例部署
二进制安装mysql-5.7.26 [root@mysql ~]# cd /server/tools/ [root@mysql tools]# ll total 629756 -rw-r--r-- 1 ...
- MySQL多实例部署与优化
MySQL安装 ##上传MySQL安装包## mkdir /home/oldboy/tools -p cd /home/oldboy/tools/ ###wget -q http://mirrors. ...
- Mysql单实例数据库安装
第1章 MySQL数据库安装 在当今的大中型互联网企业里,MySQL数据库服务几乎都是运行在Linux系列操作系统上,当然,你在可以运行在Windows/Unix等商业操作系统上,大中型互联网企业使用 ...
- mysql单实例多库与多实例单库
一.单实例多库: 一个mysql实例,创建多个数据目录. 规划: 实例路径:/usr/local/mysql 数据目录路径: (1)/usr/local/mysql/data (2)/usr/loca ...
- mysql多实例部署
mysql 多实例常规来讲,主要有二种方案可以实现,这二种方案各有利弊,如下:1.基于多配置文件 通过使用多个配置文件来启动不同的进程,以此来实现多实例. 优点:逻辑简单,配置简单 缺点:管理起来不方 ...
- Linux下MySQL多实例部署记录
什么是MySQL多实例 简单地说,Mysql多实例就是在一台服务器上同时开启多个不同的服务端口(3306.3307),同时运行多个Mysql服务进程,这些服务进程通过不同的socket监听不同的服务端 ...
- mysql 多实例部署
Centos7.6 部署3个Mariadb 实例 [root@localhost ~]# yum install mariadb-server -y # 创建对应的目录文件 [root@localho ...
- Mysql单实例脚本自动化安装
安装包:mysql-5.6.31.tar.gz 已有配置文件:my.cnf *注意:本次Mysql的配置文件是在my.cnf的基础上更改得到的,my.cnf存放路径为/opt/rh/my.cnf 脚本 ...
- MySQL 单实例编译安装 以及多实例安装简介
这是基本的安装教程,与牛逼的大神无关,或许是牛逼大神不用看就会安装吧. CentOS 6.5 Final x86_64 一.预安装软件包 1.开发包组合安装 yum groupinstall &qu ...
随机推荐
- P9110 [PA2020] Samochody dostawcze
题目简述 有 \(n\) 个点,这些点分为两种类型.第一种,点在 \((x,0)\) 的位置.这些点从 \(t_i\) 的时刻开始向北走.第二种,点在 \((0,y)\) 的位置.这些点从 \(t_i ...
- MybatisPlus对Mysql数据库关键字作为列名的处理--SQLSyntaxErrorException: You have an error in your SQL syntax;
说明: 在设计数据库时,使用mysql关键字作为列名(比如order用于排序),就会报错:java.sql.SQLSyntaxErrorException: You have an error in ...
- ChatGenTitle:使用百万arXiv论文信息在LLaMA模型上进行微调的论文题目生成模型
ChatGenTitle:使用百万arXiv论文信息在LLaMA模型上进行微调的论文题目生成模型 相关信息 1.训练数据集在Cornell-University/arxiv,可以直接使用: 2.正式发 ...
- 1.9 动态解密ShellCode反弹
动态解密执行技术可以对抗杀软的磁盘特征查杀.其原理是将程序代码段中的代码进行加密,然后将加密后的代码回写到原始位置.当程序运行时,将动态解密加密代码,并将解密后的代码回写到原始位置,从而实现内存加载. ...
- 基于AQS实现自定义同步类
Mutex(互斥锁) Mutex是一个不可重入的互斥锁实现.锁资源(AQS里的state)只有两种状态:0表示未锁定,1表示锁定.下边是Mutex的核心源码: class Mutex implemen ...
- Git企业开发控制理论和实操-从入门到深入(四)|Git的远程操作|Gitee
前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总 然后就是博主最近最花时间的一 ...
- 【双指针】双指针算法详解两道经典OJ【力扣27,力扣26,力扣38】超详细算法教程
[双指针]双指针算法详解两道经典OJ[力扣27,力扣26,力扣38]超详细算法教程 今天又又到了我们刷力扣题的时间啦! 今天博主给大家带来的三道题是: 27. 移除元素 26. 删除有序数组中的重复项 ...
- JS数字转为带有逗号的字符串
alert(formatNum(10000000.87)); /** * @param n 输入数字 * @param is_int 是否只显示整数 * @returns {string} */ fu ...
- 京豆薅羊毛新姿势-docker方式
背景 上周看脉脉的时候看到下面这个帖子,领导让搞项目容器化,但是楼主没搞过,对新东西有畏惧感,怂了,然后把机会白白送给其他同事了. 想来我也是差不多这样的,刚到阿里工作的时候,有个好的项目机会来了,领 ...
- webpack学习笔记(一)安装与试用
由于初次接触 webpack(官网),对很多方面都不是很理解,在查找部分资料后记录一下自己的见解(本文实践基于webpack4). 1. 个人见解 简单来说,webpack就是js的 打包 工具.个人 ...