部署Mysql
创建ConfigMap
我们将mysql的配置文件内容配置进ConfigMap中,点击创建
添加键值对数据:
配置示例:
[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
对于mysql来说,我们需要将容器内部的数据挂载到外部存储,防止数据丢失,对于k8s来说,我们可以先创建一个pvc。
存储卷设置:
点击创建:
创建mysql的有状态应用
设置名称:
添加mysql镜像:并点击使用默认端口
限制cpu和内存:
添加环境变量:主要是为mysql设置mysql登录密码
配置:MYSQL_ROOT_PASSWORD,并点击同步主机时区。
点击对号,点击下一步。点击添加存储卷并配置:
挂载配置文件:
点击下一步,点击创建:
稍等几分钟,这个StatefulSet就创建好了。
我们看能不能容器里面连上mysql:
可以直接连上:
但是我们并不能在外部访问这个mysql应用,只能在集群内访问。
因为kebesphere在给我们部署这个mysql的时候,给我们自动创建了一个service,type是ClusterIP,并没有向外部暴露端口。
并且服务名称是自动生成的,所以对应DNS也是不规则的,我们有必要自己创建service。
自定义服务
先删除自动创建的svc
直接删除,不要点击有状态副本集,这样会直接把StatefulSet都删了的。
点击创建,指定工作负载:
指定名称,点击下一步
指定我们创建的mysql:
添加端口,点击下一步
选择暴露给外网,访问方式选择NodePort,点击创建
这样就创建了名为his-mysql-svc的service,暴露31772端口
外部连接:
配置集群内部访问:
然后就会生成his-mysql-cluster.his给集群内部访问
部署Redis
一般来说,我们要知道怎么部署一个中间件,我们需要知道它的配置文件路径、数据目录、以及环境变量参数等等。
这个我们需要去DockerHub网站看镜像的官方说明:
redis官方说明的很清楚:数据存储在/data下面,自定义配置文件放在/usr/local/etc/redis/下面,并启动命令加上自定义配置文件路径来启动。
所以我们根据说明,就应该知道部署的配置。
第一步,创建ConfigMap:
配置键值对,键就是配置文件名,值就是配置文件内容:
创建redis的有状态副本集:
查找redis,并使用默认端口:
限制CPU和内存:
设置启动命令(这里我设置redis配置文件存放路径是/etc/redis/redis.conf),并设置同步主机时区,保存
点击添加存储卷模板:
选择挂载配置文件,即刚才创建的redis-conf,路径/etc/redis,与前面启动命令的配置文件路径对应上。
点击下一步,点击创建
设置redis-svc,先删除它自己创建的service,再创建一个,指定工作负载:
配置端口:
点击创建,就会生成一个服务:
如果想要集群内部访问,就仿照上面mysql的做法,这里不再赘述。
部署ElasticSearch
docker部署es的docker命令:
# 创建数据目录
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
配置configMap:
创建有状态副本集:
选择es镜像:
限制cpu、内存:
添加环境变量:
添加存储卷模板:
挂载配置文件:挂载子路径
创建服务:
暴露给外网,并创建:
访问暴露出来的端口:31858