KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)

文章目录

    • 1、登录kubesphere平台
    • 2、kubesphere部署应用分析
      • 2.1、工作负载
      • 2.2、服务
      • 2.3、应用路由
      • 2.4、任务
      • 2.5、存储与配置
      • 2.6、部署应用三要素
    • 3、部署mysql
      • 3.1、mysql容器启动实例
      • 3.2、mysql部署分析
      • 3.3、创建mysql的配置
      • 3.4、创建mysql的数据卷pvc
      • 3.5、创建mysql工作负载
      • 3.6、创建mysql服务service
    • 4、使用navicat测试连接mysql

在在kubesphere平台上部署MySQL,首先搭建好k8s集群,并且在集群上安装配置好kubesphere。详细安装配置教程请参见我的上个博客文章:

Kubernetes上安装KubeSphere(亲测–实操完整版)

1、登录kubesphere平台

游览器输入自己搭建的kubesphere平台网址:http://192.168.162.31:30880/login

注意:登录成功后,首先创建一个拥有platform-admin角色的用户 账号,然后创建自己的企业空间和项目。
具体的创建企业空间、项目、用户和平台角色,详见kubesphere官网:
https://kubesphere.io/zh/docs/v3.4/quick-start/create-workspace-and-project/

登录后进入自己的项目。
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第1张图片
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第2张图片

2、kubesphere部署应用分析

KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第3张图片

2.1、工作负载

问题一:在云上部署应用,需要用什么样的方式进行部署?

采用工作负载,kubesphere针对三种应用采用三种方式进行部署:

  1. 无状态部署Depolyment:主要针对微服务等应用
  2. 有状态副本集 StatefulSet:mysql、redis等有状态且数据动态变化的服务
  3. 守护进程集 DaemonSet:日志收集器应用。

KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第4张图片
无论是哪种服务,部署后最终以pod容器组的形式运行在k8s集群中。

2.2、服务

问题二:部署后的应用服务或者说pod,如何实现在集群内或者集群外的访问?

通过服务Service,两种网络访问模式:

  1. ClusterIP模式:集群内部访问
  2. NodePort模式:外部访问

2.3、应用路由

问题三:服务应用路由如何实现?

kubesphere中的应用路由对应的是kubernetes中的ingress服务。

2.4、任务

问题四:任务如何实现?

kubesphere中的任务对应的是kubernetes中的Job和CronJob。

2.5、存储与配置

问题五:容器组pod中涉及的数据存储和配置如何实现?

kubesphere中的存储中的持久卷申明 对应的是kubernetes中的数据存储卷PVC挂载。
kubesphere中的配置中的配置字典 对应的是kubernetes中的配置集ConfigMap。

2.6、部署应用三要素

总结:
部署一种应用需要考虑的三要素:

  1. 应用的部署方式:选择一种工作负载进行部署
  2. 应用的数据挂载(数据、配置文件):部署期间需要配置存储卷PVC和配置集ConfigMap的创建
  3. 应用的可访问性:服务访问Service(两种模式)

3、部署mysql

3.1、mysql容器启动实例

所有应用部署需要参照docker hub中对应镜像的说明进行。

启动msyql服务的实例:

docker run -p 3306:3306 --name mysql-01 \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
--restart=always \
-d mysql:5.7 

3.2、mysql部署分析

KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第5张图片

3.3、创建mysql的配置

在kubesphere平台中创建mysql的配置文件。
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第6张图片
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第7张图片
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第8张图片
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第9张图片

mysql配置文件示例(文件名:my.cnf) ,内容如下:

[client]
default-character-set=utf8mb4
 
[mysql]
default-character-set=utf8mb4
 
[mysqld]
init_connect='SET collation_connection = utf8mb4_unicode_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

3.4、创建mysql的数据卷pvc

KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第10张图片
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第11张图片

如果没有nfs-storage,需要安装一下nfs服务器,并设置为默认存储。参照我的博客 kubernetes上安装kubesphere中的安装nfs网络存储文件内容:
Kubernetes上安装KubeSphere(亲测–实操完整版)

创建mysql-pvc成功:
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第12张图片

3.5、创建mysql工作负载

KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第13张图片

KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第14张图片
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第15张图片
输入mysql:5.7.35 回车
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第16张图片
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第17张图片
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第18张图片
挂载数据存储卷:
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第19张图片
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第20张图片
挂载配置文件:
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第21张图片

KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第22张图片
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第23张图片

KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第24张图片
等待更新完成,状态变为运行中。

测试进入mysql
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第25张图片

KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第26张图片
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第27张图片

# cd /etc/mysql/conf.d
# ls
my.cnf
# cat my.cnf

如果修改配置文件,也会同步到mysq状态集的配置内容。

测试 集群内部访问使用服务名.项目名 进行访问

mysql -uroot -hhis-mysql.his -p

KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第28张图片

1、集群内部,直接通过应用的 【服务名.项目名】 直接访问

mysql -uroot -hhis-mysql.his -p

2、集群外部,用node ip+端口号 +mysql密码

3.6、创建mysql服务service

KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第29张图片
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第30张图片
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第31张图片
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第32张图片
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第33张图片

4、使用navicat测试连接mysql

KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第34张图片
连接成功。

1、集群内部,直接通过应用的 【服务名.项目名】 直接访问

mysql -uroot -hhis-mysql.his -p

2、集群外部,用node ip+端口号 +mysql密码

KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)_第35张图片

你可能感兴趣的:(容器技术,Docker+K8S,mysql,数据库)