前面我们学习了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单实例部署的更多相关文章

  1. Oracle 19c单实例部署

    目录 Oracle 19c单实例部署: 1.配置yum: 2.安装rpm包: 3.设置hostname: 4.配置hostname解析: 5.配置时钟同步服务(ntp): 6.检查及配置内核参数: 7 ...

  2. 单台主机MySQL多实例部署

    二进制安装mysql-5.7.26 [root@mysql ~]# cd /server/tools/ [root@mysql tools]# ll total 629756 -rw-r--r-- 1 ...

  3. MySQL多实例部署与优化

    MySQL安装 ##上传MySQL安装包## mkdir /home/oldboy/tools -p cd /home/oldboy/tools/ ###wget -q http://mirrors. ...

  4. Mysql单实例数据库安装

    第1章 MySQL数据库安装 在当今的大中型互联网企业里,MySQL数据库服务几乎都是运行在Linux系列操作系统上,当然,你在可以运行在Windows/Unix等商业操作系统上,大中型互联网企业使用 ...

  5. mysql单实例多库与多实例单库

    一.单实例多库: 一个mysql实例,创建多个数据目录. 规划: 实例路径:/usr/local/mysql 数据目录路径: (1)/usr/local/mysql/data (2)/usr/loca ...

  6. mysql多实例部署

    mysql 多实例常规来讲,主要有二种方案可以实现,这二种方案各有利弊,如下:1.基于多配置文件 通过使用多个配置文件来启动不同的进程,以此来实现多实例. 优点:逻辑简单,配置简单 缺点:管理起来不方 ...

  7. Linux下MySQL多实例部署记录

    什么是MySQL多实例 简单地说,Mysql多实例就是在一台服务器上同时开启多个不同的服务端口(3306.3307),同时运行多个Mysql服务进程,这些服务进程通过不同的socket监听不同的服务端 ...

  8. mysql 多实例部署

    Centos7.6 部署3个Mariadb 实例 [root@localhost ~]# yum install mariadb-server -y # 创建对应的目录文件 [root@localho ...

  9. Mysql单实例脚本自动化安装

    安装包:mysql-5.6.31.tar.gz 已有配置文件:my.cnf *注意:本次Mysql的配置文件是在my.cnf的基础上更改得到的,my.cnf存放路径为/opt/rh/my.cnf 脚本 ...

  10. MySQL 单实例编译安装 以及多实例安装简介

    这是基本的安装教程,与牛逼的大神无关,或许是牛逼大神不用看就会安装吧. CentOS 6.5 Final  x86_64 一.预安装软件包 1.开发包组合安装 yum groupinstall &qu ...

随机推荐

  1. 靠谱:开源IM项目OpenIM压测程序介绍-自己动手测试性能和稳定性

    压测前准备 (一)服务端配置调整 config/config.yaml 以8核16G为例 (1)openImMessagePort: [ 10130, 10131, 10132, 10133, 101 ...

  2. 【五】gym搭建自己的环境之寻宝游戏,详细定义自己myenv.py文件以及算法实现

    相关文章: 相关文章: [一]gym环境安装以及安装遇到的错误解决 [二]gym初次入门一学就会-简明教程 [三]gym简单画图 [四]gym搭建自己的环境,全网最详细版本,3分钟你就学会了! [五] ...

  3. pywin32 实现寻找窗体并模拟按键

    import win32api import win32gui, win32con import win32clipboard import re import time class cWindow: ...

  4. C++小项目|2022期末大作业

    前言 那么这里博主先安利一下一些干货满满的专栏啦! 手撕数据结构https://blog.csdn.net/yu_cblog/category_11490888.html?spm=1001.2014. ...

  5. Java 数字 默认是 Integer类型的问题,System.currentTimeMillis() + (180 * 24 * 60 * 60 * 1000)的问题,剖析、Long + Integer的问题

    最终结论: (180 * 24 * 60 * 60) 这种计算表达式在 Java中是默认以 Integer类型来的,若不超过 Integer的最大值则没有问题,若超过则必须用 (180 * 24 * ...

  6. .NET 云原生架构师训练营(模块二 基础巩固 REST && RESTful)--学习笔记

    2.3.1 Web API -- REST && RESTful 什么是 REST,什么是 RESTful RESTful API 设计 RESTful 成熟度模型 什么是 REST, ...

  7. Linux-查看文本中第m行到n行的内容

    如何查看文件第6749行到6758行? 方式一:使用sed命令 不显示行号:sed -n 'M,Np'  fileName 例如:sed -n '6749,6758p'  hive-default.x ...

  8. NC16591 [NOIP2010]关押罪犯

    题目链接 题目 题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨气 ...

  9. 快速傅里叶变换(FFT)和小波分析在信号处理上的应用

    1前言 1.1傅里叶变换 函数f(t)为一元连续函数,其傅里叶变换定义为: F(w)的傅里叶逆变换定义为: 其中,i为虚数单位.由欧拉公式: 任意绝对可积的连续函数f(t),都可以用三角函数表示,由于 ...

  10. 【OpenGL ES】渐变凸镜贴图

    1 前言 ​ 正方形图片贴到圆形上 中将正方形图片上的纹理映射到圆形模型上,凸镜贴图 中介绍了将圆形图片上的纹理映射到凸镜模型上.如果将原图片逐渐变为凸镜效果,中间的变化过程又是什么样的? ​ 图片的 ...