云容器引擎

容器化Web访问MySQL(LocalPV)实践

2025-01-09 08:26:54

本篇以实际场景介绍如何发布无状态工作负载,并连接有状态数据库,并配合使用持久存储,在本片教程中,我们使用Local PV作为持久存储介质,在生产使用中建议使用Ceph存储。

l  创建持久存储类

在CCSE界面依次点击上图按钮,出现新建存储类界面,我们选择Local存储,如下:

创建持久存储卷:

在CCSE界面依次点击上图按钮,出现新建存储卷界面,我们选择第一步中创建的持久存储类,如下:

选择LocalPV所在节点以及LocalPV的目录,这里LocalPV所在节点即想要把容器数据持久化到哪一个k8s节点上,LocalPV的目录即是我们所选节点上的指定目录。(注意:此目录需要在我们所选择节点上存在,若不存在需要手动在改节点上创建目录)

创建MySQL有状态服务并使用持久存储卷:

在CCSE界面依次点击上图按钮,出现新建存储卷界面,我们创建MySQL的流程如下:

点击新建PVC后,我们需要格外注意下图中的注意点。

然后我们开始设置MySQL容器的参数,依次输入MySQL容器名称、选择MySQL镜像及版本号,需要格外注意挂载点的名称和容器路径。

设置容器的资源参数及环境变量,MySQL容器正常运行我们必须要设置MYSQL_ROOT_PASSWORD这个环境变量,设置root用户密码,同时如果需要在MySQL容器启动后帮我们创建一个database,我们可以使用MYSQL_DATABASE这个环境变量。

最后一步,我们为MySQL容器配置集群内访问方式,所以我们选择类型为ClusterIP。

l  创建web无状态工作负载并连接数据库

1、web工作负载配置

我们使用的web工作负载使用的配置文件如下:

spring:

  jpa:

    show-sql: false

    open-in-view: true

  datasource:

    driver-class-name: "com.mysql.cj.jdbc.Driver"

    jdbc-url: "jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false"

    username: "${MYSQL_USERNAME}"

password: "${MYSQL_PASSWORD}"

 

在上述配置中,我们通过读取环境变量来设置应用所需的MySQL主机IP、端口、用户名、密码。

 

2、创建无状态工作负载

这里我们只介绍无状态工作负载的环境变量怎么设置,其他的参数配置与MySQL的类似:

l  查看MySQL容器(可选)

进入k8s集群,通过命令查看我们刚刚创建出来的MySQL容器

执行命令进入这个MySQL容器

执行MySQL命令连接MySQL客户端,此处的参数分别为:-h后面的参数为我们在3.1步骤中创建的MySQL工作负载名称,-u指定用户为root用户,-p参数指定root用户的密码,指定的密码为我们在3.1中创建MySQL容器时指定的MYSQL_ROOT_PASSWORD这个环境变量的值。

查看MySQL中的database,即可看到我们在3.1中通过MYSQL_DATABASE这个环境变量创建的database。

l  验证MySQL容器的持久存储(可选)

创建一个database 容器化Web访问MySQL(LocalPV)连续指定两次exit命令分别退出MySQL客户端和MySQL容器

用于验证,我们可以在CCSE界面上重新部署MySQL容器,然后查看数据是否仍然存在,如下图:


4A8MpF7G5kRf