v2.0
v1.0
  1. Release Notes
    1. Release Notes - 2.0.2最新
    1. Release Notes - 2.0.1
    1. Release Notes - 2.0.0
  1. 产品介绍
    1. 产品简介
    1. 产品功能
    1. 产品优势
    1. 架构说明
    1. 应用场景
    1. 名词解释
  1. 安装指南
    1. 安装说明
    1. 需开放的端口
    1. All-in-One 模式
    1. Multi-Node 模式
    1. 在 Kubernetes 在线部署 KubeSphere
    1. 在 Kubernetes 离线部署 KubeSphere
    1. Master 和 etcd 节点高可用
    1. 存储安装配置说明
    1. 集群组件配置说明
    1. 安装负载均衡器插件
    1. 安装内置 Harbor
    1. 安装内置 GitLab
    1. 升级
    1. 访问 SonarQube 和 Jenkins 服务端
    1. 集群节点扩容
    1. 卸载
  1. 快速入门
    1. 入门必读
    1. 示例一 - 多租户管理快速入门
    1. 示例二 - 应用路由与服务示例
    1. 示例三 - 部署 MySQL
    1. 示例四 - 部署 Wordpress
    1. 示例五 - 创建简单任务
    1. 示例六 - 一键部署应用
    1. 示例七 - 设置弹性伸缩 (HPA)
    1. 示例八 - Source-to-Image
    1. 示例九 - Bookinfo 微服务的灰度发布
    1. 示例十 - 基于Spring Boot项目构建流水线
    1. 示例十一 - 图形化构建流水线
    1. 示例十二 - CI/CD 流水线(离线版)
    1. 示例十三 - 使用 Ingress-Nginx 进行灰度发布
  1. 管理员指南
    1. 多租户管理
      1. 多租户管理概述
      2. 角色权限概览
    1. 平台管理
      1. 企业空间管理
      2. 账号管理
      3. 平台角色
    1. 基础设施
      1. 服务组件
      2. 主机管理
      3. 存储类型
    1. 监控中心
      1. 监控概述
      2. 如何利用监控定位问题
      3. 集群状态监控
      4. 应用资源监控
      5. 监控策略 - 节点级别
      6. 监控消息 - 节点级别
    1. 平台设置
      1. 应用仓库
      2. 基于本地仓库搭建应用仓库部署Redis
      3. 上传应用到 KubeSphere 官方仓库
      4. 基于 GitHub 搭建自有应用仓库
      5. 邮件服务器
      6. 日志收集
      7. 添加 Fluentd 作为日志接收者
      8. 添加 Kafka 作为日志接收者
    1. 工具箱
      1. Web Kubectl
      2. 日志收集
    1. 通用配置
      1. 系统配置修改
      2. 上传镜像至 Harbor
      3. Jenkins 系统设置
    1. FAQ
      1. DevOps 运维FAQ
  1. 用户指南
    1. 应用
      1. 应用模板
      2. 自制应用
      3. 流量治理
      4. 熔断
    1. 工作负载
      1. 工作负载概述
      2. 部署
      3. 有状态副本集
      4. 守护进程集
      5. 任务
      6. 定时任务
      7. 设置健康检查器
      8. 工作负载管理
      9. 自定义 S2i 模板
    1. 存储
      1. 存储概述
      2. 存储卷
      3. Local Volume 使用方法
    1. 网络与服务
      1. 服务管理
      2. 灰度发布
      3. 应用路由
    1. 监控告警
      1. 告警策略 - 工作负载级别
      2. 告警消息 - 工作负载级别
    1. 配置中心
      1. 密钥
      2. 配置
      3. 镜像仓库
    1. 项目设置
      1. 基本信息
      2. 成员角色
      3. 项目成员
      4. 外网访问
    1. DevOps 工程
      1. DevOps 工程概述
      2. 管理 DevOps 工程
      3. 流水线
      4. 凭证管理
      5. 添加代码仓库
      6. 访问 SonarQube 并创建 Token
      7. 设置自动触发扫描
      8. Jenkins Agent 说明
      9. 流水线常见问题
  1. API 文档
    1. API 文档
    1. 如何调用 API
    1. API 常用术语对照
    1. 监控指标说明
  1. 常见问题
    1. 安装常见问题
    1. 存储常见问题
    1. 控制台使用常见问题
    1. DevOps 常见问题
  1. 附录
    1. 部署 Ceph 存储服务端
    1. 部署 GlusterFS 存储服务端
    1. 云平台配置端口转发和防火墙
KubeSphere®️ 2020 All Rights Reserved.

部署 MySQL 有状态应用

目的

本文以创建一个有状态副本集 (Statefulset) 为例,使用 mysql:5.6 镜像部署一个有状态的 MySQL 应用,作为 Wordpress 网站的后端,演示如何创建使用 Statefulset。本示例的 MySQL 初始密码将以 密钥 (Secret) 的方式进行创建和保存。为方便演示,本示例仅说明流程,关于参数和字段的详细释义参见 密钥有状态副本集

前提条件

预估时间

约 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_PASSWORD123456

Secret 设置

第二步:创建有状态副本集

在左侧菜单栏选择 工作负载 → 有状态副本集,然后点击 创建有状态副本集

创建有状态副本集

第三步:填写基本信息

基本信息中,参考如下填写,完成后点击 下一步

  • 名称:必填,起一个简洁明了的名称,便于用户浏览和搜索,例如填写 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 有状态应用

至此,有状态应用 MySQL 已经创建成功,将作为 Wordpress 网站的后端数据库。下一步需要创建 Wordpress 部署并通过外网访问该应用,参见 快速入门 - 部署 Wordpress