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.

部署 Wordpress

目的

本文以创建一个部署 (Deployment) 为例,部署一个无状态的 Wordpress 应用,基于 示例二 的 MySQL 应用最终部署一个外网可访问的 Wordpress 网站。Wordpress 连接 MySQL 数据库的密码将以 配置 (ConfigMap) 的方式进行创建和保存。

前提条件

预估时间

约 15 分钟。

操作示例

部署 Wordpress

第一步:创建配置

Wordpress 的环境变量 WORDPRESS_DB_PASSWORD 即 Wordpress 连接数据库的密码,为演示方便,以创建配置 (ConfigMap) 的方式来代替该环境变量。创建的配置将在创建 Wordpress 的容器组设置时作为环境变量写入。

1.1. 以项目普通用户 project-regular 登录 KubeSphere,在当前项目下左侧菜单栏的 配置中心 选择 配置,点击 创建配置

1.2. 填写配置的基本信息,完成后点击 下一步

  • 名称:作为 Wordpress 容器中环境变量的名称,填写 wordpress-configmap
  • 别名:支持中文,帮助您更好的区分资源,比如 连接 MySQL 密码
  • 描述信息:简单介绍该 ConfigMap,如 MySQL password

基本信息

1.3. ConfigMap 是以键值对的形式存在,此处键值对设置为 WORDPRESS_DB_PASSWORD123456,完成后点击 创建

ConfigMap 设置

第二步:创建存储卷

2.1. 在当前项目下左侧菜单栏的 存储卷,点击创建,基本信息如下。

  • 名称:wordpress-pvc
  • 别名:Wordpress 持久化存储卷
  • 描述信息:Wordpress PVC

创建存储卷

2.2. 完成后点击 下一步,存储卷设置中,参考如下填写:

  • 存储类型:选择集群中已创建的存储类型,例如 Local
  • 访问模式:选择单节点读写 (RWO)
  • 存储卷容量:默认 10 Gi

存储卷设置

2.3. 标签默认为 app: wordpress-pvc,点击 「创建」。

设置标签

2.4. 点击左侧菜单中的 存储卷,查看存储卷列表,可以看到存储卷 wordpress-pvc 已经创建成功,状态是 “准备就绪”,可挂载至工作负载。

若存储类型为 Local,那么该存储卷在被挂载至工作负载之前都将显示创建中,这种情况是正常的,因为 Local 目前还不支持存储卷动态配置 (Dynamic Volume Provisioning) ,挂载后状态将显示 “准备就绪”。

创建存储卷

第三步:创建部署

在左侧菜单栏选择 工作负载 → 部署,进入列表页,点击 创建部署

创建部署

第四步:填写基本信息

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

  • 名称:必填,起一个简洁明了的名称,便于用户浏览和搜索,比如 wordpress
  • 别名:可选,支持中文帮助更好的区分资源,如 Wordpress 网站
  • 描述信息:简单介绍该工作负载,方便用户进一步了解

填写基本信息

第五步:容器组模板

5.1. 点击 添加容器。容器组模板中,名称可自定义,镜像填写 wordpress:4.8-apache,CPU 和内存此处暂不作限定,将使用在创建项目时指定的默认值。

5.2. 下滑至服务设置,对 端口环境变量 进行设置,其它项暂不作设置。参考如下填写。

  • 端口:名称可自定义如 port,选择 TCP 协议,填写 Wordpress 在容器内的端口 80
  • 环境变量:这里需要添加两个环境变量

    • 点击 引用配置中心,名称填写 WORDPRESS_DB_PASSWORD,选择在第一步创建的配置 (ConfigMap) wordpress-configmapWORDPRESS_DB_PASSWORD
    • 点击 添加环境变量,名称填写 WORDPRESS_DB_HOST,值填写 mysql-service,对应的是 示例一 - 部署 MySQL 创建 MySQL 服务的名称,否则无法连接 MySQL 数据库,可在服务列表中查看其服务名。

容器组模板

5.3. 完成后点击 保存,点击 下一步

第六步:存储卷设置

6.1. 此处选择 添加已有存储卷,选择第二步创建的存储卷 wordpress-pvc

存储卷设置

6.2. 设置存储卷的挂载路径,其中挂载选项选择 读写,挂载路径为 /var/www/html,保存后点击 下一步

存储卷设置

第七步:查看部署

7.1. 标签保留默认值,节点选择器此处暂不作设置,点击 创建,部署创建完成。

7.2. 创建完成后,部署的状态为 "更新中" 是由于创建后需要拉取 wordpress 镜像并创建容器 (大概一分钟左右),可以看到容器组的状态是 "ContainerCreating",待部署创建完成后,状态会显示 “运行中”。

部署详情

7.3. 查看创建的部署 Wordpress,可以看到其状态显示运行中,下一步则需要为 Wordpress 创建服务,最终暴露给外网访问。

创建成功

第八步:创建服务

8.1. 在当前项目中,左侧菜单栏选择 网路与服务 → 服务,点击 创建

创建服务

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

  • 名称:必填,起一个简洁明了的名称,便于用户浏览和搜索,比如 wordpress-service
  • 别名和描述信息:如 Wordpress 服务

创建服务

8.3. 服务设置参考如下填写,完成后点击 下一步

  • 服务类型:选择第一项 通过集群内部IP来访问服务 Virtual IP
  • 选择器:点击 指定工作负载 可以指定上一步创建的部署 Wordpress,指定后点击 保存
  • 端口:端口名称可自定义如 port,服务的端口和目标端口都填写 TCP 协议的 80 端口
  • 会话亲和性:None,完成参数设置,选择下一步

说明: 若有实现基于客户端 IP 的会话亲和性的需求,可以在会话亲和性下拉框选择 "ClientIP" 或在代码模式将 service.spec.sessionAffinity 的值设置为 "ClientIP"(默认值为 "None"),该设置可将来自同一个 IP 地址的访问请求都转发到同一个后端 Pod。

服务类型 服务设置

8.4. 本示例标签保留默认值,选择 下一步

8.5. 服务暴露给外网访问支持 NodePort 和 LoadBalancer,这里服务的访问方式选择 NodePort

设置 NodePort

8.6. 点击 创建,wordpress-service 服务可创建成功。注意,wordpress-service 服务生成了一个节点端口 32689

查看服务

注意:若需要在外网访问,可能需要绑定公网 EIP 并配置端口转发和防火墙规则。在端口转发规则中将内网端口 32689 转发到源端口 32689,然后在防火墙开放这个源端口,保证外网流量可以通过该端口,外部才能够访问。例如在 QingCloud 云平台进行上述操作,则可以参考 云平台配置端口转发和防火墙

访问 Wordpress

设置完成后,WordPress 就以服务的方式通过 NodePort 暴露到集群外部,可以通过 http://{$公网 IP}:{$节点端口 NodePort} 访问 WordPress 博客网站。

至此,您已经熟悉了部署 (Deployments) 和有状态副本集 (Statefulsets) 、密钥 (Secret)、配置 (ConfigMap) 的基本功能使用,关于部署和有状态副本集的各项参数释义,详见 部署有状态副本集