v2.1
v2.0
v1.0
  1. Release Notes
    1. Release Notes - 2.1.1最新
    1. Release Notes - 2.1.0
    1. Release Notes - 2.0.2
    1. Release Notes - 2.0.1
    1. Release Notes - 2.0.0
  1. 产品介绍
    1. 什么是 KubeSphere
    1. 平台功能
    1. 为什么选择 KubeSphere
    1. 架构说明
    1. 应用场景
    1. 名词解释
  1. 安装指南
    1. 安装说明
      1. 概览
      2. 网络防火墙配置
      3. 集群其它参数配置
    1. 在 Linux 快速安装 KubeSphere
      1. All-in-One 模式
      2. Multi-Node 模式
      3. 完整安装(开启所有功能组件)
    1. 在 Kubernetes 安装 KubeSphere
      1. 准备工作
      2. 在 Kubernetes 安装 KubeSphere
    1. 安装可插拔的功能组件
      1. 可插拔功能组件概览
      2. 安装应用商店
      3. 安装内置的 DevOps 系统
      4. 安装内置的日志系统
      5. 安装微服务治理组件(Service Mesh)
      6. 安装告警通知系统
      7. 安装 Metrics-server 开启 HPA
      8. 验证可插拔功能组件的安装
    1. 集群高可用配置安装
      1. 在青云安装 HA 集群
      2. 在华为云安装 HA 集群
      3. 持久化存储配置说明
    1. 相关工具与插件
      1. 安装内置 Grafana
      2. 访问 SonarQube 和 Jenkins 服务端
      3. 安装 Porter 负载均衡器插件
      4. 安装 QingCloud 负载均衡器插件
    1. 认证配置
      1. 接入 LDAP / AD 域账号(Beta)
    1. 集群运维
      1. 安装后添加新的存储类型
      2. 集群节点扩容
      3. 卸载
  1. 升级指南
    1. 升级必读
    1. All-in-One 升级
    1. Multi-node 升级
  1. 快速入门
    1. 入门必读
    1. 1. 多租户管理快速入门
    1. 2. 应用路由与服务示例
    1. 3. 创建 Wordpress 应用并发布至 K8s
    1. 4. 一键部署应用
    1. 5. 创建简单任务
    1. 6. 设置弹性伸缩 (HPA)
    1. 7. Source-to-Image
    1. 8. Binary-to-Image
    1. 9. 基于Spring Boot项目构建流水线
    1. 10. 图形化构建流水线
    1. 11. Bookinfo 微服务的灰度发布
    1. 12. 使用 Ingress-Nginx 进行灰度发布
    1. 13. 应用商店
  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. DevOps 配置
      1. 系统配置修改
      2. 上传镜像至 Harbor
      3. 流水线配置邮件服务器
      4. Jenkins 系统设置
    1. FAQ
      1. DevOps 运维FAQ
  1. 用户指南
    1. 应用
      1. 应用模板
      2. 自制应用
      3. 流量治理
      4. 熔断
    1. 工作负载
      1. 工作负载概述
      2. 部署
      3. 有状态副本集
      4. 守护进程集
      5. 任务
      6. 定时任务
      7. 设置健康检查器
      8. 工作负载管理
      9. 落盘日志收集
    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. 开发者指南
    1. Helm 应用开发
      1. 开发模板规范
      2. Helm 应用开发入门
    1. Source to Image(S2I) 自定义模版开发
      1. S2I 原理及流程介绍
      2. 自定义 S2I 模版
  1. API 文档
    1. API 文档
    1. 如何调用 API
    1. API 常用术语对照
    1. 监控指标说明
  1. 常见问题
    1. 安装常见问题
    1. 存储常见问题
    1. 控制台使用常见问题
    1. DevOps 常见问题
  1. 附录
    1. 部署 Ceph 存储服务端
    1. 部署 GlusterFS 存储服务端
    1. 安装 OpenEBS 创建 LocalPV 存储类型
    1. 云平台配置端口转发和防火墙
KubeSphere®️ 2020 All Rights Reserved.

部署 GlusterFS 存储服务端

编辑

GlusterFS 是一个开源的分布式文件系统,本指南将介绍如何在 Ubuntu 系统部署一个节点数为 2 的 GlusterFS (v3.12.12) 存储服务端集群和 Heketi,Heketi 用来管理 GlusterFS,并提供 RESTful API 接口供 Kubernetes 调用。本指南仅供测试 KubeSphere 存储服务端的搭建,正式环境搭建 GlusterFS 集群请参考 GlusterFS 官方网站,搭建 Heketi 请参考 官方文档

准备节点

主机规格

Hostname IP OS CPU RAM Device
glusterfs-server1 172.20.1.5 Ubuntu 16.04.4 4 Core 4 GB /dev/vda 100GiB, /dev/vdc 300GiB
glusterfs-server2 172.20.1.6 Ubuntu 16.04.4 4 Core 4 GB /dev/vda 100GiB, /dev/vdc 300GiB

注:

  • glusterfs-server1 作为集群的管理主机,用来执行安装任务。
  • 如需创建更大容量 GlusterFS 存储服务端,可挂载更大容量块存储磁盘至主机。
  • 两个节点的 Hostname 需要与主机规格的列表中一致,因为后续步骤的命令行中有匹配到 Hostname,若与以上列表不一致请注意在后续的命令中对应修改成实际的 Hostname。
  • GlusterFS 服务端将数据存储至 /dev/vdc 块设备中,/dev/vdc 必须是未经分区格式化的原始块设备。

集群架构

  +-----------------------+               +-----------------------+
  |                       |               |                       |
  |   glusterfs-server1   |_______________|   glusterfs-server2   |
  |        heketi         |               |                       |
  |                       |               |                       |
  +-----------------------+               +-----------------------+

预备工作

配置 root 登录

1、参考如下步骤分别为 glusterfs-server1 和 glusterfs-server2 配置 root 用户登录:

  • 1.1. ubuntu 用户登录主机后切换 root 用户:
ubuntu@glusterfs-server1:~$ sudo -i
[sudo] password for ubuntu: 
root@glusterfs-server1:~# 
  • 1.2. 设置 root 用户登录密钥:
root@glusterfs-server1:~# passwd
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
  • 同上,在 glusterfs-server2 修改 root 密码。

修改 hosts 文件

2、参考如下步骤修改 glusterfs-server1 和 glusterfs-server2 的 hosts 文件:

root@glusterfs-server1:~# vi /etc/hosts
...

# hostname loopback address
172.20.1.5  glusterfs-server1
172.20.1.6  glusterfs-server2
  • 同上,在 glusterfs-server2 执行以上命令并修改 hosts。

配置 SSH 免密登录

3、以下为 glusterfs-server1 的 root 用户配置无密码登录至 glusterfs-server1 与 glusterfs-server2。

  • 3.1. 创建密钥,提示 “Enter passphrase” 时,直接回车键,口令即为空:
root@glusterfs-server1:~# ssh-keygen
...
  • 3.2. 拷贝密钥到各个 GlusterFS 节点,按照提示输入密钥:
root@glusterfs-server1:~# ssh-copy-id root@glusterfs-server1
...
root@glusterfs-server1:~# ssh-copy-id root@glusterfs-server2
...
  • 3.3. 验证免密登录,即 glusterfs-server1 无需输入密码可以登录 glusterfs-server1 和 glusterfs-server2:
root@glusterfs-server1:~# ssh root@glusterfs-server1
root@glusterfs-server1:~# ssh root@glusterfs-server2

开始安装

安装 Glusterfs

4、以下用 apt-get 软件包管理工具在 glusterfs-server1 安装 GlusterFS:

root@glusterfs-server1:~# apt-get install software-properties-common
root@glusterfs-server1:~# add-apt-repository ppa:gluster/glusterfs-3.12
root@glusterfs-server1:~# apt-get update
root@glusterfs-server1:~# apt-get install glusterfs-server -y
  • 同上,在 glusterfs-server2 执行以上命令安装 GlusterFS。待安装完成后分别在两个节点检查安装的 GlusterFS 版本:
$ glusterfs -V
glusterfs 3.12.12
...

加载内核模块

5、执行以下命令为 glusterfs-server1 加载必需的三个内核模块:

root@glusterfs-server1:~# echo dm_thin_pool | sudo tee -a /etc/modules
dm_thin_pool
root@glusterfs-server1:~# echo dm_snapshot | sudo tee -a /etc/modules
dm_snapshot
root@glusterfs-server1:~# echo dm_mirror | sudo tee -a /etc/modules
dm_mirror
root@glusterfs-server1:~# apt-get -y install thin-provisioning-tools
  • 同上,在 glusterfs-server2 执行以上命令。

创建 Glusterfs 集群

6、参考如下步骤创建 GlusterFS 集群:

root@glusterfs-server1:~# gluster peer probe glusterfs-server2
peer probe: success. 
root@glusterfs-server2:~# gluster peer probe glusterfs-server1
peer probe: success. Host glusterfs-server1 port 24007 already in peer list

验证安装结果

  • 分别在 glusterfs-server1 和 glusterfs-server2 检查 GlusterFS 集群节点间的连接状态,若 State 显示 Peer in Cluster (Connected) 则说明 GlusterFS 集群已成功搭建:
$ gluster peer status

安装 Hekeit

7、Heketi 是用来管理 GlusterFS 卷的生命周期的,并提供了一个 RESTful API 接口供 Kubernetes 调用,因为 GlusterFS 没有提供 API 调用的方式,所以我们借助 heketi,通过 Heketi,Kubernetes 可以动态配置 GlusterFS 卷。以下将介绍如何在 glusterfs-server1 安装 Heketi(v7.0.0)。

  • 7.1. 下载 Hekeit Installer:
root@glusterfs-server1:~# wget https://github.com/heketi/heketi/releases/download/v7.0.0/heketi-v7.0.0.linux.amd64.tar.gz
  • 7.2. 解压并安装 Heketi:
root@glusterfs-server1:~# tar -xf heketi-v7.0.0.linux.amd64.tar.gz
root@glusterfs-server1:~# cd heketi/
root@glusterfs-server1:~/heketi# cp heketi /usr/bin/
root@glusterfs-server1:~/heketi# cp heketi-cli /usr/bin

配置 Heketi

8、参考如下步骤配置 Heketi:

  • 8.1. 将 Heketi 纳入 systemd 管理:
root@glusterfs-server1:~# vi /lib/systemd/system/heketi.service
[Unit]
Description=Heketi Server
[Service]
Type=simple
WorkingDirectory=/var/lib/heketi
ExecStart=/usr/bin/heketi --config=/etc/heketi/heketi.json
Restart=on-failure
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
  • 8.2. 创建文件夹:
root@glusterfs-server1:~# mkdir -p /var/lib/heketi
root@glusterfs-server1:~# mkdir -p /etc/heketi
  • 8.3. 创建 Heketi 配置文件:
root@glusterfs-server1:~# vim /etc/heketi/heketi.json
{
  "_port_comment": "Heketi Server Port Number",
  "port": "8080",

  "_use_auth": "Enable JWT authorization. Please enable for deployment",
  "use_auth": false,

  "_jwt": "Private keys for access",
  "jwt": {
    "_admin": "Admin has access to all APIs",
    "admin": {
      "key": "123456"
    },
    "_user": "User only has access to /volumes endpoint",
    "user": {
      "key": "123456"
    }
  },

  "_glusterfs_comment": "GlusterFS Configuration",
  "glusterfs": {
    "_executor_comment": [
      "Execute plugin. Possible choices: mock, ssh",
      "mock: This setting is used for testing and development.",
      "      It will not send commands to any node.",
      "ssh:  This setting will notify Heketi to ssh to the nodes.",
      "      It will need the values in sshexec to be configured.",
      "kubernetes: Communicate with GlusterFS containers over",
      "            Kubernetes exec api."
    ],
    "executor": "ssh",

    "_sshexec_comment": "SSH username and private key file information",
    "sshexec": {
      "keyfile": "/root/.ssh/id_rsa",
      "user": "root"
    },

    "_kubeexec_comment": "Kubernetes configuration",
    "kubeexec": {
      "host" :"https://kubernetes.host:8443",
      "cert" : "/path/to/crt.file",
      "insecure": false,
      "user": "kubernetes username",
      "password": "password for kubernetes user",
      "namespace": "OpenShift project or Kubernetes namespace",
      "fstab": "Optional: Specify fstab file on node.  Default is /etc/fstab"
    },

    "_db_comment": "Database file name",
    "db": "/var/lib/heketi/heketi.db",
    "brick_max_size_gb" : 1024,
	"brick_min_size_gb" : 1,
	"max_bricks_per_volume" : 33,


    "_loglevel_comment": [
      "Set log level. Choices are:",
      "  none, critical, error, warning, info, debug",
      "Default is warning"
    ],
    "loglevel" : "debug"
  }
}

启动Heketi

9、在 glusterfs-server1 安装 Heketi 后,需要启动 Heketi,Heketi 的状态 "Active" 显示 active (running) ... 则说明成功启动:

root@glusterfs-server1:~# systemctl start heketi
root@glusterfs-server1:~# systemctl status heketi
● heketi.service - Heketi Server
   Loaded: loaded (/lib/systemd/system/heketi.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-08-14 13:50:18 CST; 9ms ago
 Main PID: 6854 (heketi)
    Tasks: 4
   Memory: 1.3M
      CPU: 3ms
   CGroup: /system.slice/heketi.service
           └─6854 /usr/bin/heketi --config=/etc/heketi/heketi.json

Aug 14 13:50:18 glusterfs-server1 systemd[1]: Started Heketi Server.
root@glusterfs-server1:~# systemctl enable heketi
Created symlink from /etc/systemd/system/multi-user.target.wants/heketi.service to /lib/systemd/system/heketi.service.

编辑拓扑文件

10、参考如下步骤编辑 Heketi 的拓扑文件,以下所有 IP 地址应替换为您安装环境的实际主机 IP 地址。GlusterFS 服务端将数据存储至 /dev/vdc 块设备中,以下 "/dev/vdc" 可按实际情况修改:

root@glusterfs-server1:~# vim /etc/heketi/topology.json 
  {
    "clusters": [
       {
         "nodes": [
           {
             "node": {
               "hostnames": {
                 "manage": [
                   "172.20.1.5"
                ],
                "storage": [
                  "172.20.1.5"
                ]
              },
              "zone": 1
            },
            "devices": [
              "/dev/vdc"
            ]
          },
          {
            "node": {
              "hostnames": {
                "manage": [
                  "172.20.1.6"
                ],
                "storage": [
                  "172.20.1.6"
                ]
              },
              "zone": 1
            },
            "devices": [
              "/dev/vdc"
            ]
          }
        ]
      }
    ]
  }

载入拓扑文件

11、执行以下命令为 Heketi 载入拓扑文件:

root@glusterfs-server1:~# export HEKETI_CLI_SERVER=http://localhost:8080
root@glusterfs-server1:~# heketi-cli topology load --json=/etc/heketi/topology.json

验证 Heketi 安装

12、执行以下命令查看 Heketi 的安装信息:

heketi-cli volume list --secret 123456 --user admin