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.

部署 Ceph RBD 存储服务端

编辑

简介

Ceph 是一个分布式存储系统,本指南将介绍如何在 Ubuntu 系统部署一个节点数为 2 的 Ceph (v10.2.10) 存储服务端集群。本指南仅供测试 KubeSphere 存储服务端的搭建,正式环境搭建 Ceph 集群请参考 Ceph 官方文档

Ceph 基本组件

Ceph 主要有三个基本进程:

  • OSD 用于集群中所有数据与对象的存储,处理集群数据的复制、恢复、回填、再均衡,并向其他osd守护进程发送心跳,然后向 Monitor 提供一些监控信息。

  • Monitor 监控整个集群的状态,维护集群的 cluster MAP 二进制表,保证集群数据的一致性。

  • MDS (可选) 为 Ceph 文件系统提供元数据计算、缓存与同步。MDS 进程并不是必须的进程,只有需要使用 CephFS 时,才需要配置 MDS 节点。

准备节点

主机规格

Hostname IP OS CPU RAM Device
ceph1 172.20.1.7 Ubuntu 16.04.4 4 Core 4 GB /dev/vda 100 GiB
ceph2 172.20.1.8 Ubuntu 16.04.4 4 Core 4 GB /dev/vda 100 GiB

集群架构

  +--------------+               +--------------+
  |              |               |              |
  |    ceph1     |_______________|     ceph2    |
  | MONITOR,OSD  |               |      OSD     |
  |              |               |              |
  +--------------+               +--------------+

注:

  • ceph1 作为集群的管理主机,用来执行安装任务。
  • 如需创建更大容量的 Ceph 存储服务端,可创建更大容量主机磁盘或挂载大容量磁盘至主机并挂载至 ceph1 的 /osd1 和 ceph2 的 /osd2 文件夹。
  • 两个节点的 Hostname 需要与主机规格的列表中一致,因为后续步骤的命令行中有匹配到 Hostname,若与以上列表不一致请注意在后续的命令中对应修改成实际的 Hostname。

预备工作

配置 root 登录

1、参考如下步骤分别为 ceph1 和 ceph2 配置 root 用户登录:

  • 1.1. ubuntu 账户登录主机后切换 root 用户:
ubuntu@ceph1:~$ sudo -i
[sudo] password for ubuntu: 
root@ceph1:~# 
  • 1.2. 设置 root 用户登录密钥:
root@ceph1:~# passwd
  • 同上,在 ceph2 修改 root 密码。

修改 hosts 文件

2、参考如下步骤修改 ceph1 和 ceph2 的 hosts 文件:

root@ceph1:~# vim /etc/hosts
127.0.0.1	localhost

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

# hostname loopback address
172.20.1.7	ceph1
172.20.1.8	ceph2
  • 同上,在 ceph2 执行以上命令并修改 hosts。

配置 SSH 免密登录

3、以下为 ceph1 的 root 用户配置无密码登录至 ceph1 与 ceph2。

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

开始安装

安装 Ceph 和 ceph-deploy

4、Ceph 官方推出了一个用 python 写的工具 cpeh-deploy,可以很大程度地简化 Ceph 集群的配置过程,参考如下步骤为 ceph1 和 ceph2 安装 Ceph 和 ceph-deploy:

root@ceph1:~# apt-get update
root@ceph1:~# apt-get install -y ceph ceph-deploy
  • 同上,在 ceph2 执行以上命令。

创建文件夹

5、参考如下步骤为 ceph1 和 ceph2 创建文件夹。

  • 5.1. 在 ceph1 创建文件夹存放初始化配置:
root@ceph1:~# mkdir -p /root/cluster 
root@ceph1:~# rm -f /root/cluster/*
  • 5.2. 分别在 ceph1 和 ceph2 存放 ceph 数据:
root@ceph1:~# mkdir -p /osd1 & rm -rf /osd1/*
root@ceph1:~# chown ceph:ceph /osd1
root@ceph2:~# mkdir -p /osd2 & rm -rf /osd2/*
root@ceph2:~# chown ceph:ceph /osd2
  • 5.3. 在 ceph1 创建 ceph 文件夹:
root@ceph1:~# mkdir -p /var/run/ceph/
root@ceph1:~# chown ceph:ceph /var/run/ceph/
  • 同上,在 ceph2 执行以上命令创建 ceph 文件夹。

初始化 ceph

6、执行以下命令在 ceph1 节点初始化 ceph:

root@ceph1:~# cd /root/cluster
root@ceph1:~/cluster# ceph-deploy new ceph1
  • 查看各文件夹内容:
root@ceph1:~/cluster# ls
ceph-deploy-ceph.log  ceph.conf  ceph.mon.keyring
root@ceph1:~/cluster# ls /etc/ceph/
rbdmap
root@ceph1:~/cluster# ls /var/run/ceph/

修改 Ceph 配置文件

7、在 ceph1 配置 ceph.conf,添加以下参数:

root@ceph1:~/cluster# vim ceph.conf 
[global]
···
···
osd pool default size = 2
osd crush chooseleaf type = 0
osd max object name len = 256
osd journal size = 128

激活 Mon 节点

8、Mon 节点监控着整个 Ceph 集群的状态信息,监听于 TCP 的 6789 端口。每一个 Ceph 集群中至少要有一个 Mon 节点,如下在 ceph1 激活 Monitor:

root@ceph1:~/cluster# ceph-deploy mon create-initial
...
[ceph_deploy.gatherkeys][DEBUG ] Got ceph.bootstrap-rgw.keyring key from ceph1.

创建 OSD 节点

9、OSD 是强一致性的分布式存储,用于集群中所有数据与对象的存储,如下在 ceph1 为集群中两个节点创建 OSD:

root@ceph1:~/cluster# ceph-deploy osd prepare ceph1:/osd1 ceph2:/osd2
...
[ceph_deploy.osd][DEBUG ] Host ceph1 is now ready for osd use.
...
[ceph_deploy.osd][DEBUG ] Host ceph2 is now ready for osd use.
  • 启动 OSD 节点:
root@ceph1:~/cluster# ceph-deploy osd activate ceph1:/osd1 ceph2:/osd2

拷贝配置

10、拷贝配置到 ceph1 和 ceph2:

root@ceph1:~/cluster# ceph-deploy admin ceph1 ceph2
root@ceph1:~/cluster# chmod +r /etc/ceph/ceph.client.admin.keyring
root@ceph2:~/cluster# chmod +r /etc/ceph/ceph.client.admin.keyring

验证安装结果

11、至此,一个简单的 Ceph 存储服务集群搭建就完成了,接下来查看安装的 Ceph 版本和状态信息。

  • 11.1. 查看 Ceph 版本:
root@ceph1:~/cluster# ceph -v
ceph version 10.2.10 (5dc1e4c05cb68dbf62ae6fce3f0700e4654fdbbe)
  • 11.2. 在两个节点检查 ceph 状态,可以使用 ceph –s 查看,如果是 health 显示 HEALTH_OK 状态说明配置成功。

使用 ceph 服务

12、首先,需要创建 rbd image,image 是 Ceph 块设备中的磁盘映像文件,可使用 rbd create ... 命令创建指定大小的映像。

  • 12.1. 此处在 ceph1 以创建 foo 为例:
root@ceph1:~/cluster# rbd create foo --size 4096 --pool rbd --image-format=1
rbd: image format 1 is deprecated
  • 12.2. 检查 rbd image:
root@ceph1:~/cluster# rbd ls
foo
  • 12.3. 在 ceph1 把 foo image 映射到内核:
root@ceph1:~/cluster# rbd map foo
/dev/rbd0
  • 12.4. 检查挂载状态:
root@ceph1:~/cluster# fdisk -l
...
Disk /dev/rbd0: 4 GiB, 4294967296 bytes, 8388608 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4194304 bytes / 4194304 bytes

分区格式化

13、将 foo image 格式化为 ext4 格式的文件系统:

root@ceph1:~/cluster# mkfs.ext4 /dev/rbd0
  • 13.1. 创建文件夹,然后挂载至目标文件夹:
root@ceph1:~/cluster# mkdir -p /mnt/rbd
root@ceph1:~/cluster# mount /dev/rbd0 /mnt/rbd
  • 13.2 在 ceph1 检查挂载结果:
root@ceph1:~/cluster# df -ah
...
/dev/rbd0       3.9G  8.0M  3.6G   1% /mnt/rbd
root@ceph1:~/cluster# ls /mnt/rbd/
lost+found

释放资源

14、注意,在使用完毕之后,可参考如下步骤卸载和删除不需要的资源。

  • 14.1. 参考如下将文件系统从文件中卸载:
root@ceph1:~/cluster# umount /mnt/rbd
  • 14.2. 检查卸载结果:
root@ceph1:~/cluster# df -ah
...
  • 14.3. 卸载 rbd image:
root@ceph1:~/cluster# rbd unmap foo
  • 14.4. 检查卸载结果:
root@ceph1:~/cluster# fdisk -l
Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x5735896b

Device     Boot Start       End   Sectors  Size Id Type
/dev/vda1  *     2048 209713247 209711200  100G 83 Linux


Disk /dev/vdb: 2 GiB, 2147483648 bytes, 4194304 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
  • 14.5. 删除 rbd image:
root@ceph1:~/cluster# rbd remove foo
Removing image: 100% complete...done.