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.

Multi-Node 模式

Multi-Node 即多节点集群部署,部署前建议您选择集群中任意一个节点作为一台任务执行机 (taskbox),为准备部署的集群中其他节点执行部署的任务,且 Taskbox 应能够与待部署的其他节点进行 ssh 通信

提示:

  • Multi-node 支持将 KubeSphere 部署在任何云平台,本文档仅使用 QingCloud 云平台作为部署演示。
  • 若需要安装 Harbor 和 GitLab 请在安装前参考 安装内置 Harbor安装内置 GitLab
  • 若在云平台使用在线安装,可通过调高带宽的方式来加快安装速度。

前提条件

  • 如果您的服务器上游有安全组管控,请参考 需开放的端口列表 并根据实际情况开放相关的端口,如果您没有开启防火墙则无需在主机配置该项内容。
  • 已准备 KubeSphere 支持的 持久化存储服务端,本篇文档以配置 QingCloud-CSI 插件对接 QingCloud 云平台块存储 为例,需要有 QingCloud 云平台 的账号。
  • 注意,若使用 QingCloud 云平台块存储作为存储服务,安装前需要确保用户账号在当前 Zone 资源配额满足最低要求。Multi-node 安装最少需要 14 块硬盘,本示例默认使用容量型硬盘,所需的容量型硬盘容量的最低配额为 1400 GB,若硬盘数量和容量配额不够请提工单申请配额。 若使用其他类型的硬盘,参考 QingCloud 各类型块存储配额表

第一步: 准备主机

您可以参考以下节点规格准备 至少 3 台 符合要求的主机开始 multi-node 模式的部署。

说明:

  • 所有节点需要时间同步,否则可能会安装不成功;
  • 若选择离线安装,则系统盘建议在 100 G 以上;
  • 若使用 ubuntu 16.04 建议使用其最新的版本 16.04.5;
  • 若使用 ubuntu 18.04,则需使用 root 用户;
  • 若 Debian 系统未安装 sudo 命令,则需要在安装前使用 root 用户执行 apt update && apt install sudo 命令安装 sudo 命令后再进行安装。
  • 若需要选装 Harbor 和 GitLab,则所有主机的总内存需要 24 GiB 以上。
操作系统 最小配置 (根据集群规模)
CentOS 7.5 (64 bit) 总 CPU 应不小于 8 核, 总内存不小于 16 G, 系统盘:40 G
Ubuntu 16.04/18.04 LTS (64 bit) 总 CPU 应不小于 8 核, 总内存不小于 16 G, 系统盘:40 G
Red Hat Enterprise Linux Server 7.4 (64 bit) 总 CPU 应不小于 8 核, 总内存不小于 16 G, 系统盘:40 G
Debian Stretch 9.5 (64 bit) 总 CPU 应不小于 8 核, 总内存不小于 16 G, 系统盘:40 G

以下用一个示例介绍 multi-node 模式部署多节点环境,本示例准备了 3 台 CentOS 7.5 的主机并以 root 用户准备安装。登录主机名为 Master 的节点作为任务执行机 Taskbox 来执行安装步骤。

安装说明 已经介绍了 KubeSphere 集群架构是由管理节点 (Master) 和工作节点 (Node) 构成的,这 3 台主机分别部署 1 个 Master 节点和 2 个 Node 节点。

说明:高级版支持 Master 和 etcd 节点高可用配置,但本示例仅作为测试部署的演示,因此 3 台主机中仅部署单个 Master 和单个 etcd,正式环境建议配置 Master 和 etcd 节点的高可用,请参阅 Master 和 etcd 节点高可用配置

假设主机信息如下所示:

主机 IP 主机名 集群角色
192.168.0.1 master master,etcd
192.168.0.2 node1 node
192.168.0.3 node2 node

集群架构: 单 master 单 etcd 双 node

集群架构图

第二步: 准备安装配置文件

1. 下载 KubeSphere Advanced Edition 2.0.2 安装包至待安装机器,进入安装目录。

$ curl -L https://kubesphere.io/download/stable/advanced-2.0.2 > advanced-2.0.2.tar.gz && tar -zxf advanced-2.0.2.tar.gz && cd kubesphere-all-advanced-2.0.2/conf

1. 下载 离线安装包 (2.0.2) 至待安装机器。

$ curl -L https://kubesphere.io/download/offline/advanced-2.0.2 > advanced-2.0.2.tar.gz && tar -zxf advanced-2.0.2.tar.gz && cd kubesphere-all-offline-advanced-2.0.2/conf

2. 编辑主机配置文件 conf/hosts.ini,为了对目标机器及部署流程进行集中化管理配置,集群中各个节点在主机配置文件 hosts.ini 中应参考如下配置,建议使用 root 用户进行安装。

说明:

  • 若以非 root 用户 (如 ubuntu 用户) 进行安装,[all] 部分可参考配置文件 conf/hosts.ini 的注释中 non-root 用户示例部分编辑。
  • 如果在 taskbox 使用 root 用户无法 ssh 连接到其他机器,也需要参考 conf/hosts.ini 的注释中 non-root 用户示例部分,但执行安装脚本 install.sh 时建议切换到 root 用户,如果对此有疑问可参考 安装常见问题 - 问题 2
  • master, node1, node2 作为集群各个节点的主机名,若需要自定义主机名则所有主机名需要都使用小写形式。

以下示例在 CentOS 7.5 上使用 root 用户安装,每台机器信息占一行,不能分行。

root 配置 hosts.ini 示例:

[all]
master ansible_connection=local  ip=192.168.0.1
node1  ansible_host=192.168.0.2  ip=192.168.0.2  ansible_ssh_pass=PASSWORD
node2  ansible_host=192.168.0.3  ip=192.168.0.3  ansible_ssh_pass=PASSWORD

[kube-master]
master

[kube-node]
node1
node2

[etcd]
master

[k8s-cluster:children]
kube-node
kube-master

说明:

  • [all]: 中需要修改集群中各个节点的内网 IP 和主机 root 用户密码:
    主机名为 "master" 的节点作为已通过 SSH 连接的 Taskbox 所以无需填写密码。
    Node 节点的参数比如 node1 和 node2 的 ansible_hostip 都替换为当前 node1 和 node2 的内网 IP,将 ansible_ssh_pass 相应替换为 node1 和 node2 的 root 用户密码。

    参数解释:

    • ansible_connection: 与主机的连接类型,此处设置为 local 即本地连接
    • ansible_host: 集群中将要连接的主机地址或域名
    • ip: 集群中将要连接的主机 IP
    • ansible_user: 默认的 SSH 用户名 (非 root),例如 ubuntu
    • ansible_become_pass: 默认的 SSH 用户登录密码
    • ansible_ssh_pass: 待连接主机 root 用户的密码
  • [kube-master][etcd]:应将主机名 "master" 填入 [kube-master] 和 [etcd] 部分,"master" 节点作为 taskbox,用来执行整个集群的安装任务,同时 "master" 节点在 KubeSphere 集群架构中也将作为 Master 节点管理集群和 etcd 节点负责保存集群的数据。

  • [kube-node]:将主机名 "node1","node2" 填入 [kube-node] 部分,作为 KubeSphere 集群的 node 节点。

  • [local-registry]:离线安装包中该参数值表示设置哪个节点作为本地镜像仓库,默认值为 master 节点。建议给该节点的 /mnt/registry 单独挂盘 (参考 fdisk 命令),使镜像可保存在持久化存储并节省机器空间。

3. 编辑 conf/vars.yml 配置文件,集群的存储以配置 QingCloud-CSI 插件对接 QingCloud 云平台块存储为例。

  • 其中值带有 * 号的值为必配项,参数释义详见 存储配置说明 - QingCloud 云平台块存储

    • qingcloud_access_key_idqingcloud_secret_access_key: 通过 QingCloud 云平台 的右上角账户图标选择 API 密钥 创建密钥并下载获得 (填写时仅粘贴单引号内的值);
    • qingcloud_zone:根据您的机器所在的 Zone 填写,例如:sh1a(上海一区-A)、sh1b(上海1区-B)、 pek2(北京2区)、pek3a(北京3区-A)、gd1(广东1区)、gd2a(广东2区-A)、ap1(亚太1区)、ap2a(亚太2区-A);
    • qingcloud_csi_enabled:是否使用 QingCloud-CSI 作为持久化存储,此处改为 true;
    • qingcloud_csi_is_default_class:是否设定为默认的存储类型,此处改为 true;
  • 不带 * 号的最后六行为可配项所以在示例中无需修改,当前默认配置了容量型硬盘,type 为 2(可挂载至任意类型主机)。
    注意,安装前需要确认您 QingCloud 账号在当前 Zone 的容量型硬盘的配额是否大于 14。 若需要使用其他类型的硬盘,也需要满足最低配额,修改配置可参考 存储配置说明 - QingCloud 云平台块存储

vars.yml 配置存储示例:

# Access key pair can be created in QingCloud console
qingcloud_access_key_id: * Input your QingCloud key id *
qingcloud_secret_access_key: * Input your QingCloud access key *
# Zone should be the same as Kubernetes cluster
qingcloud_zone: * Input your Zone ID (e.g. pek3a, gd2) *
···

# QingCloud CSI
qingcloud_csi_enabled: * true *
qingcloud_csi_is_default_class: * true *
qingcloud_type: 2
qingcloud_maxSize: 5000
qingcloud_minSize: 100
qingcloud_stepSize: 50
qingcloud_fsType: ext4
qingcloud_disk_replica: 2

说明:

  • 网络、存储、GitLab、Harbor、负载均衡器插件等相关内容可在 conf/vars.yml 配置文件中修改或开启安装,其中网络的默认插件是 Calico。可按需修改相关配置项,未做修改将以默认参数执行;
  • 支持存储类型:QingCloud 云平台块存储QingStor NeonSANNFSGlusterFSCeph RBD,存储配置相关的详细信息请参考 存储配置说明
  • 由于 Kubernetes 集群的 Cluster IP 子网网段默认是 10.233.0.0/18,Pod 的子网网段默认是 10.233.64.0/18,因此部署 KubeSphere 的节点 IP 地址范围不应与以上两个网段有重复,若遇到地址范围冲突可在配置文件 conf/vars.yaml 修改 kube_service_addresseskube_pods_subnet 的参数。

第三步: 安装 KubeSphere

KubeSphere 多节点部署会自动化地进行环境和文件监测、平台依赖软件的安装、Kubernetes 和 etcd 集群的自动化部署,以及存储的自动化配置。Installer 默认安装的 Kubernetes 版本是 v1.13.5,安装成功后可通过 KubeSphere 控制台右上角点击关于查看安装的版本。

参考以下步骤开始 multi-node 部署。

说明:由于 multi-node 的安装时间跟网络情况和带宽、机器配置、安装节点个数等因素都有关,此处暂不提供时间标准。

1. 进入安装目录,建议使用 root 用户执行 install.sh 安装脚本:

$ cd scripts
$ ./install.sh

2. 输入数字 2 选择第二种 Multi-node 模式开始部署,安装程序会提示您是否已经配置过存储,若您已参考上述步骤配置了存储请输入 "yes" 开始安装。

################################################
         KubeSphere Installer Menu
################################################
*   1) All-in-one
*   2) Multi-node
*   3) Quit
################################################
https://kubesphere.io/               2018-07-08
################################################
Please input an option: 2

3. 验证 KubeSphere 集群部署是否成功:

(1) 待安装脚本执行完后,当看到如下 "Successful" 界面,则说明 KubeSphere 安装成功。

successsful!
#####################################################
###              Welcome to KubeSphere!           ###
#####################################################

Console: http://192.168.0.1:30880
Account: admin
Password: P@88w0rd

NOTE:Please modify the default password after login.
#####################################################

提示:如需要再次查看以上的界面信息,可在安装包目录下执行 cat kubesphere/kubesphere_running 命令查看。

(2) 若需要在外网访问,在云平台需要在端口转发规则中将内网端口 30880 转发到源端口 30880,然后在防火墙开放这个源端口,确保外网流量可以通过该端口。

例如在 QingCloud 平台配置端口转发和防火墙规则,则可以参考 云平台配置端口转发和防火墙

(3) 安装成功后,浏览器访问对应的 URL,如 http://{$公网IP}:30880,即可进入 KubeSphere 登录界面,可使用默认的用户名和密码登录 KubeSphere 控制台体验,登录后请立即修改默认密码。参阅 快速入门 帮助您快速上手 KubeSphere。

KubeSphere 控制台

注意:登陆 Console 后请在 "集群状态" 查看服务组件的监控状态,待所有组件启动完成后即可开始使用,通常所有服务组件都将在 15 分钟内启动完成。

FAQ

KubeSphere 已在阿里云、腾讯云、华为云、青云、AWS 上进行过部署测试,测试结果与相关的解决方法,请参考 AE 2.0.2 云平台安装测试结果。另外,常见的安装问题我们也已整理相关的解决方法在 安装常见问题

若遇到其它的安装问题需要协助支持,请在 GitHub 提交 Issue,我们会第一时间跟踪解决。