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

相关推荐
newxtc3 小时前
【国内中间件厂商排名及四大中间件对比分析】
安全·web安全·网络安全·中间件·行为验证·国产中间件
Wlq04153 小时前
middleware中间件概述
中间件
Thuni_soft3 小时前
华宇TAS应用中间件入围鲲鹏应用创新大赛2024全国总决赛
中间件
知识的宝藏5 小时前
Django中间件应该怎么使用
中间件·django
zmd-zk7 小时前
kafka+zookeeper的搭建
大数据·分布式·zookeeper·中间件·kafka
景天科技苑9 小时前
【云原生开发】K8S多集群资源管理平台架构设计
云原生·容器·kubernetes·k8s·云原生开发·k8s管理系统
千年死缓1 天前
gin中间件
中间件·gin
小安运维日记1 天前
Linux云计算 |【第五阶段】CLOUD-DAY8
linux·运维·docker·云计算·k8s·学习方法
General_G2 天前
FastDDS服务发现之PDP和EDP的收发
数据库·中间件·服务发现·fast dds·rtps
我叫于豆豆吖2 天前
出海企业如何借助云计算平台实现多区域部署?
部署·实例·