KubeSphere中间件部署

中间件部署实战 · 语雀

RuoYi-Cloud部署实战 · 语雀

https://www.bilibili.com/video/BV13Q4y1C7hS?p=79

应用部署三要素

应用的部署方式(Deployment、StatefulSet、DaemonSet)

应用的数据挂载(数据、配置文件)

应用的可访问性(Service)

部署MySQL

DockerHub官网了解

DockerHub找到镜像

参考官网的命令,启动一个MySQL实例(比如用docker的话-e是指定环境变量)

shell 复制代码
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

官网上对镜像也有描述:MySQL的配置文件在/etc/mysql/my.cnf下,

使用自定义MySQL配置文件

MySQL的默认配置在/etc/mysql/my.cnf中。它可能会包含其他目录,如/etc/mysql/conf.d/etc/mysql/mysql.conf.d

请检查mysql镜像本身中的相关文件和目录以了解更多详细信息。

如果/my/custom/config-file.cnf是您的自定义配置文件的路径和名称,您可以像这样启动您的mysql容器(注意,只有自定义的目录路径config文件用于此命令)

shell 复制代码
docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

这将启动一个新的容器some-mysql,其中mysql实例使用/etc/mysql/my.cnf/etc/mysql/conf.d/config-file.cnf的组合启动设置,后者的设置优先。

不带cnf文件的配置

许多配置选项可作为标志传递给mysqld。这将使您能够灵活地自定义容器,而不需要cnf文件。例如,将所有表的默认编码和排序规则更改为使用UTF-8(utf8mb4),运行以下命令:

shell 复制代码
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

查看可用选项的完整列表,运行:

shell 复制代码
docker run -it --rm mysql:tag --verbose --help

以前用Docker启动MySQL容器

shell 复制代码
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 

分析

Pod里面是使用官方镜像的Mysql容器

启动时指定环境变量MYSQL_ROOT_PASSWORD

MySql的所有数据在容器内/var/lib/mysql路径下,此目录应以PVC方式挂载出来

配置文件在容器内/etc/mysql/conf.d路径下,k8s中,中间件的配置文件可以以configMap的方式做配置集

Mysql配置

部署Mysql之前,先把Mysql的ConfigMap做出来,在/etc/mysql/conf.d路径下以.cnf结尾的文件都会被Mysql识别为配置文件,所以ConfigMap的key可以写作my.cnf

mysql配置具体内容(ConfigMap的Value)

properties 复制代码
[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

PVC

本次采用先创建好,在后续创建副本集时直接选用,其实也可以在创建副本集时直接创建挂载卷。

系统内有默认的nfs存储类型

弹幕:没有nfs-storage的,要装一下nfs服务器,并设置为默认默认存储,参照kubernetes上安装kubesphere第三节的第一小节

有状态服务一般使用单节点读写,无状态的使用多节点读写

创建完后该卷是【未挂载】的状态。

创建有状态副本集

可以限制cpu和内存,但可以不预留

页面下边环境变量配置好MYSQL_ROOT_PASSWORD=my-secret-pw

勾选【同步主机时区】

添加存储卷,选择前一步创建好的PVC并设置路径

挂载配置文件或秘钥,选择先前创建好的并设置路径。创建ConfigMap时命名的key(my.cnf)将作为文件名添加到该路径下。

启动好之后,可以进容器内部查看文件

在页面上更改了ConfigMap的配置内容,会同步到容器里面的该配置文件,但Mysql不支持热更新,还是需要重启生效。

1、集群内部,直接通过应用的 【服务名.项目名】 直接访问mysql -uroot -hhis-mysql-glgf.his -p

2、集群外部,需要添加配置

部署Redis

以前用Docker启动Redis

bash 复制代码
# 创建配置文件
## 1、准备redis配置文件内容
mkdir -p /mydata/redis/conf && vim /mydata/redis/conf/redis.conf
## 2、配置文件内容示例
appendonly yes
port 6379
bind 0.0.0.0

# docker启动redis
## 弹幕:新版本好像变成/usr/local/etc/redis/路径存放配置文件了
docker run -d -p 6379:6379 --restart=always \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-v  /mydata/redis-01/data:/data \
 --name redis-01 redis:6.2.5 \
 redis-server /etc/redis/redis.conf

分析

Redis想持久化存储,加参数--appendonly yes

redis默认数据目录是/data,

准备一个Redis的Pod,

Redis要自定义配置文件,启动命令就变了

后续在页面上的创建操作与前面Mysql雷同

部署ElasticSearch

以前用Docker启动

shell 复制代码
# 创建数据目录
mkdir -p /mydata/es-01 && chmod 777 -R /mydata/es-01

# 容器启动
docker run --restart=always -d -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-v es-config:/usr/share/elasticsearch/config \
-v /mydata/es-01/data:/usr/share/elasticsearch/data \
--name es-01 \
elasticsearch:7.13.4

分析

数据可以挂载到外边的PVC

但是配置文件只想挂载该路径下所有文件中的两个:elasticsearch.yml和jvm.options,需要在ConfigMap中准备两个配置项,key分别是两个文件的文件名

注意: 子路径挂载,配置修改后,k8s不会对其Pod内的相关配置文件进行热更新,需要自己重启Pod

页面上操作时,因为不是映射全部的/usr/share/elasticsearch/config,所以要注意设置子路径

在【选择特定的键和路径】下选择ConfigMap中对应的配置

应用商店

可以使用具有更高权限的管理员账户登录,从应用商店部署

应用仓库

使用企业空间管理员登录,设置应用仓库

学习Helm即可,去helm的应用市场添加一个仓库地址,比如:bitnami

相关推荐
番茄去哪了8 小时前
神领物流面试题(一)
java·大数据·中间件
逻极9 小时前
Kubernetes 从入门到精通:云原生容器编排
kubernetes·k8s·服务发现·容器编排
念何架构之路10 小时前
消息中间件
中间件
都说名字长不会被发现11 小时前
Spring Boot Starter 中间件账号密码加密方案设计与实现
java·spring boot·后端·中间件
瀚高PG实验室1 天前
java中间件无法连接数据库
java·数据库·中间件·瀚高数据库
凭X而动1 天前
MySQL 5.7.44 部署
数据库·mysql·部署
阿洛学长1 天前
Kubernetes超详细教程,从零开始学习k8s,从入门到实战
k8s·ks
之歆1 天前
Day11_Express 深入解析:从中间件到项目实战
中间件·express
码农飞哥1 天前
RocketMQ消费接口设计实战:为什么HTTP回调接口必须吞掉所有异常,始终返回成功?
网络协议·http·中间件·消息队列·rocketmq
硅谷秋水1 天前
物理人工智能的驾驭工程:机器人中间件是驾驭层
人工智能·机器学习·语言模型·中间件·机器人