- 目的
- 前提条件
- 预估时间
- 操作示例
- 部署 MySQL
- 第一步:创建密钥
- 第二步:创建有状态副本集
- 第三步:填写基本信息
- 第四步:容器组模板
- 第五步:添加存储卷模板
- 第六步:服务配置
- 第七步:标签设置
- 查看 MySQL 有状态应用
- 部署 MySQL
目的
本文以创建一个有状态副本集 (Statefulset) 为例,使用 mysql:5.6
镜像部署一个有状态的 MySQL 应用,作为 Wordpress 网站的后端,演示如何创建使用 Statefulset。本示例的 MySQL 初始密码将以 密钥 (Secret) 的方式进行创建和保存。为方便演示,本示例仅说明流程,关于参数和字段的详细释义参见 密钥 和 有状态副本集。
前提条件
- 已创建了企业空间、项目和普通用户
project-regular
账号,若还未创建请参考 多租户管理快速入门; - 使用项目管理员
project-admin
邀请项目普通用户project-regular
加入项目并授予operator
角色,参考 多租户管理快速入门 - 邀请成员 。
预估时间
约 10 分钟。
操作示例
部署 MySQL
第一步:创建密钥
MySQL 的环境变量 MYSQL_ROOT_PASSWORD
即 root 用户的密码属于敏感信息,不适合以明文的方式表现在步骤中,因此以创建密钥的方式来代替该环境变量。创建的密钥将在创建 MySQL 的容器组设置时作为环境变量写入。
1.1. 以项目普通用户 project-regular
登录 KubeSphere,在当前项目下左侧菜单栏的 配置中心 选择 密钥,点击 创建。
1.2. 填写密钥的基本信息,完成后点击 下一步。
- 名称:作为 MySQL 容器中环境变量的名称,可自定义,例如
mysql-secret
- 别名:别名可以由任意字符组成,帮助您更好的区分资源,例如
MySQL 密钥
- 描述信息:简单介绍该密钥,如
MySQL 初始密码
1.3. 密钥设置页,填写如下信息,完成后点击 创建。
- 类型:选择
默认
(Opaque) - Data:Data 键值对填写
MYSQL_ROOT_PASSWORD
和123456
第二步:创建有状态副本集
在左侧菜单栏选择 工作负载 → 有状态副本集,然后点击 创建有状态副本集。
第三步:填写基本信息
基本信息中,参考如下填写,完成后点击 下一步。
- 名称:必填,起一个简洁明了的名称,便于用户浏览和搜索,例如填写
wordpress-mysql
- 别名:可选,支持中文帮助更好的区分资源,例如填写
MySQL 数据库
- 描述信息:简单介绍该工作负载,方便用户进一步了解
第四步:容器组模板
4.1. 点击 添加容器,填写容器组设置,名称可由用户自定义,镜像填写 mysql:5.6
(应指定镜像版本号),CPU 和内存此处暂不作限定,将使用在创建项目时指定的默认请求值。
4.2. 对 服务设置 和 环境变量 进行设置,其它项暂不作设置,完成后点击 保存。
- 端口:名称可自定义如 port,选择
TCP
协议,填写 MySQL 在容器内的端口3306
。 - 环境变量:勾选环境变量,点击 引用配置中心,名称填写
MYSQL_ROOT_PASSWORD
,选择在第一步创建的密钥mysql-secret (MySQL 密钥)
和MYSQL_ROOT_PASSWORD
4.3. 点击 保存,然后点击 下一步。
第五步:添加存储卷模板
容器组模板完成后点击 下一步,在存储卷模板中点击 添加存储卷模板。有状态应用的数据需要存储在持久化存储卷 (PVC) 中,因此需要添加存储卷来实现数据持久化。参考下图填写存储卷信息。
- 存储卷名称:必填,起一个简洁明了的名称,便于用户浏览和搜索,此处填写
mysql-pvc
- 存储类型:选择集群已有的存储类型,如
Local
- 容量和访问模式:容量默认
10 Gi
,访问模式默认ReadWriteOnce (单个节点读写)
- 挂载路径:存储卷在容器内的挂载路径,选择
读写
,路径填写/var/lib/mysql
完成后点击 保存,然后点击 下一步。
第六步:服务配置
要将 MySQL 应用暴露给其他应用或服务访问,需要创建服务,参考以下截图完成参数设置,完成后点击 下一步。
- 服务名称:此处填写
mysql-service
,注意,这里定义的服务名称将关联 Wordpress,因此在创建 Wordpress 添加环境变量时应填此服务名 - 会话亲和性:默认 None
- 端口:名称可自定义,选择
TCP
协议,MySQL 服务的端口和目标端口都填写3306
,其中第一个端口是需要暴露出去的服务端口,第二个端口(目标端口)是容器端口
说明: 若有实现基于客户端 IP 的会话亲和性的需求,可以在会话亲和性下拉框选择 “ClientIP” 或在代码模式将 service.spec.sessionAffinity 的值设置为 “ClientIP”(默认值为 “None”),该设置可将来自同一个 IP 地址的访问请求都转发到同一个后端 Pod。
第七步:标签设置
标签保留默认设置 app: wordpress-mysql
。下一步的节点选择器可以指定容器组调度到期望运行的节点上,此处暂不作设置,直接点击 创建。
查看 MySQL 有状态应用
在列表页可以看到有状态副本集 “wordpress-mysql” 的状态为 “更新中”,该过程需要拉取镜像仓库中指定 tag 的 Docker 镜像、创建容器和初始化数据库等一系列操作,状态显示 ContainerCreating
。正常情况下在一分钟左右状态将变为 “运行中”,点击该项即可进入有状态副本集的详情页,包括资源状态、版本控制、监控、环境变量、事件等信息。
至此,有状态应用 MySQL 已经创建成功,将作为 Wordpress 网站的后端数据库。下一步需要创建 Wordpress 部署并通过外网访问该应用,参见 快速入门 - 部署 Wordpress。