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.

部署高可用的 KubeSphere

编辑

Multi-Node 模式安装 KubeSphere 可以帮助用户顺利地部署一个多节点集群用于开发和测试,在实际的生产环境我们还需要考虑 master 节点的高可用问题,因为如果 master 节点上的几个服务 kube-apiserver、kube-scheduler 和 kube-controller-manager 都是单点的而且都位于同一个节点上,一旦 master 节点宕机,可能导致 Kubernetes 集群出故障和 KubeSphere 无法访问,对线上业务存在很大的风险。

负载均衡器 (Load Balancer) 可以将来自多个公网地址的访问流量分发到多台主机上,并支持自动检测并隔离不可用的主机,从而提高业务的服务能力和可用性。用户可以使用任何云厂商提供的负载均衡器或相关的 LB 硬件设备,还可以通过 Keepalived 和 Haproxy 的方式实现多个 master 节点的高可用部署。

本文档将在 QingCloud 云平台 创建 2负载均衡器 (Load Balancer),分别作为外网和内网的负载均衡,引导您如何配置生产级别的集群,实现 master 与 etcd 节点的高可用。

示例视频

前提条件

  • 请确保已参阅 Multi-Node 模式,本文档仅说明安装过程中如何修改配置文件来配置 master 节点高可用,完整的安装流程和配置文件中的参数解释说明以 Multi-Node 模式 为准。
  • 本示例以 QingCloud 云平台 的负载均衡器作为高可用部署的演示,请预先申请 QingCloud 云平台 账号(您也可以使用其它任何云厂商提供的负载均衡器)。

Master 和 etcd 节点高可用架构

本示例准备了 6 台主机,将创建 2 个负载均衡器,主机规格参考 Multi-Node 模式 - 节点规格,将在其中 3 台部署 Master 和 etcd 集群,可编辑主机配置文件 conf/hosts.ini

Master 和 etcd 节点高可用架构

准备负载均衡器

以创建 QingCloud 云平台负载均衡器为例,简单说明其创建步骤,详细介绍可参考 QingCloud 官方文档

第一步:创建内网负载均衡器

  1. 登录 QingCloud 云平台,在 网络与 CDN 选择 负载均衡器,填写基本信息。

创建内网负载均衡器

  1. 如下示例先创建一个内网的负载均衡器,网络选择了集群主机所在的私有网络 (例如本示例的 6 台主机都在 kube 私有网络中),其它设置保持默认即可。填写基本信息后,点击 提交 完成创建。

  1. 进入上一步创建成功的负载均衡器,为其创建一个监听器,监听协议为 TCP,端口设置 6443

注意:创建监听器后请检查负载均衡器的防火墙规则,确保 6443 端口已添加至防火墙规则并且外网流量可以通过,否则外网无法访问该端口的服务,安装可能会失败。

  1. 添加后端,其中私有网络本示例的 6 台主机都在的私有网络 kube,点击 高级搜索,然后勾选其中 3 台作为 master 角色的节点,端口设置为 6443,它是 api-server 的默认端口 (Secure Port)。

  1. 点击提交,内网负载均衡器创建成功。点击 应用修改 使之生效,可以在列表查看目前负载均衡器的添加的三台 Master 节点。

注意,刚添加完的后端主机状态在监听器中可能显示 “不可用”,是因为 api-server 对应的 6443 服务端口还未运行开放,这属于正常现象。待安装成功后,后端主机上的 api-server 的服务端口 6443 将被暴露出来,后端状态变为 “活跃”,说明负载均衡器已在正常工作。

第二步:创建外网负载均衡器

您需要预先创建一个 EIP。

说明:外网负载均衡器监听的 30880 端口,是 KubeSphere 控制台在集群每个节点上开启的访问入口。

  1. 参考上述步骤,创建一个负载均衡器,并绑定公网 IP,其作为外网负载均衡器。
  1. 进入上一步创建成功的负载均衡器,为其创建一个监听器,监听协议为 HTTP,端口设置 30880

注意:创建监听器后请检查负载均衡器的防火墙规则,确保 30880 端口已添加至防火墙规则并且外网流量可以通过,否则外网无法访问该端口的服务,安装可能会失败。

  1. 添加后端,本示例的 6 台主机都在的私有网络 kube,点击 高级搜索,然后勾选所有节点,端口设置为 30880
  1. 点击提交,外网负载均衡器创建成功。点击 应用修改 使之生效,可以在列表查看目前负载均衡器的添加的 6 台节点。

修改主机配置文件

可在如下示例的 [kube-master] 和 [etcd] 部分填入主机名 master1、master2、master3 作为高可用的 Master 和 etcd 集群。注意,etcd 节点个数需要设置为 奇数个,由于 etcd 内存本身消耗比较大,部署到工作节点 (node) 上很容易出现资源不足,因此不建议在工作节点上部署 etcd 集群。为了对待部署目标机器及部署流程进行集中化管理配置,集群中各个节点在主机配置文件 hosts.ini 中应参考如下配置,建议使用 root 用户安装。

以下示例在 CentOS 7.5 上使用 root 用户安装。

说明:

  • 若以非 root 用户 (如 ubuntu 用户) 进行安装,可参考配置文件 conf/hosts.ini 的注释中 non-root 用户示例部分编辑。
  • 如果在 taskbox 使用 root 用户无法 ssh 连接到其他机器,也需要参考 conf/hosts.ini 的注释中 non-root 用户示例部分,但执行安装脚本 install.sh 时建议切换到 root 用户,如果对此有疑问可参考 安装常见问题 - 问题 2

host.ini 配置示例

[all]
master1  ansible_connection=local  ip=192.168.0.1
master2  ansible_host=192.168.0.2  ip=192.168.0.2  ansible_ssh_pass=PASSWORD
master3  ansible_host=192.168.0.3  ip=192.168.0.3  ansible_ssh_pass=PASSWORD
node1  ansible_host=192.168.0.4  ip=192.168.0.4  ansible_ssh_pass=PASSWORD
node2  ansible_host=192.168.0.5  ip=192.168.0.5  ansible_ssh_pass=PASSWORD
node3  ansible_host=192.168.0.6  ip=192.168.0.6  ansible_ssh_pass=PASSWORD

[kube-master]
master1
master2
master3

[kube-node]
node1
node2
node3

[etcd]
master1
master2
master3

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

配置负载均衡器参数

在 QingCloud 云平台准备好负载均衡器后,需在 common.yaml 配置文件中修改相关参数。假设内网负载均衡器的内网 VIP 地址是 192.168.0.253 (这里需替换为您的负载均衡器实际 IP 地址),负载均衡器设置的 TCP 协议的监听端口 (port) 为 6443,那么在 conf/common.yaml 中参数配置参考如下示例 (loadbalancer_apiserver 作为可选配置项,在配置文件中应取消注释)。

  • 注意,address 和 port 在配置文件中应缩进两个空格。并且 address 地址应填写 VIP(虚拟地址)。
  • 负载均衡器的域名默认为 "lb.kubesphere.local",供集群内部访问。如果需要修改域名则先取消注释再自行修改。

common.yaml 配置示例

## External LB example config
## apiserver_loadbalancer_domain_name: "lb.kubesphere.local"
loadbalancer_apiserver:
  address: 192.168.0.253
  port: 6443

完成 master 和 etcd 高可用的参数配置后,请继续参阅 Multi-Node 模式 - 存储配置示例 在 common.yaml 中配置持久化存储相关参数,并继续多节点的安装。