KubeSphere https://kubesphere.com.cn/ 是在 Kubernetes https://kubernetes.io/ 之上构建的以应用为中心的企业级容器平台, 所有供为用户提供简单易用的操作界面以及向导式操作方式. 同时, KubeSphere Installer 提供了 快速部署生产级别的 Kubernetes 集群和全栈化容器平台的功能, 能够快速帮助企业用户快速搭建一套以应用为中心的 DevOps 平台.
KubeSphere 支持部署和运行在包括公有云, 私有云, VM,BM 和 Kubernetes 等任何基础设施之上, 可以部署在公有云托管的 Kubernetes 之上 (如 GKE,EKS,ACK), 也支持部署在私有化的 Kubernetes 之上 (如 kubeadm,k3s,RKE 部署的集群). 同时, KubeSphere 支持在线安装与离线安装.
上一篇文章说明了如何在 Kubernetes 集群部署 KubeSphere, 本文章将手把手带你 使用 KubeSphere Installer 在 3 台 Linux 机器部署一个多节点的 Kubernetes 集群, 并开启 KubeSphere 最小化安装.
Multi-Node 即多节点部署, 部署前建议您选择集群中任意一个节点作为一台任务执行机 (taskbox), 为准备部署的集群中其他节点执行部署的任务, 且 Taskbox 应能够与待部署的其他节点进行 SSH 通信.
KubeSphere 2.1 默认仅开启最小化安装, Installer 已支持自定义安装各个可插拔的功能组件, 用户可根据业务需求和机器配置选择安装所需的组件, 请确保开启可插拔组件之前机器资源满足最低要求, 参考开启可选组件的安装.
安装时间跟网络情况和带宽, 机器配置, 安装节点个数等因素有关, 可通过调高带宽的方式, 或在安装前 配置镜像加速器 来加快安装速度.
说明:
本安装示例仅作为快速测试部署的演示, 因此将使用默认的 OpenEBS https://openebs.io/ 基于 Local Volume 提供持久化存储服务, OpenEBS 支持 动态申请 PV, 方便初次安装但没有准备存储服务端的场景下进行部署测试, 正式环境建议配置使用 KubeSphere 支持的存储类型, 参考 持久化存储配置说明.
Multi-node 支持 Master 和 etcd 节点高可用配置, 本示例为了方便多节点的快速测试安装演示, 仅部署单个 Master 和单个 etcd, 正式环境建议配置 Master 和 etcd 节点的高可用, 请参阅文档的集群高可用部署配置.
前提条件
检查安装机器的网络防火墙是否已关闭, 若未关闭防火墙则需要开放相关的指定端口, 参考 需开放的端口.
第一步: 准备主机
参考以下节点规格准备至少 3 台符合要求的主机开始 multi-node 模式的部署. 为防止软件版本冲突, 建议您选择多台干净的机器进行安装.
说明:
所有节点需要时间同步, 否则可能会安装不成功;
若使用 Ubuntu 16.04 建议使用其最新的版本 16.04.5;
若使用 Ubuntu 18.04, 则需使用 root 用户;
若 Debian 系统未安装 sudo 命令, 则需要在安装前使用 root 用户执行
apt update && apt install sudo
命令安装 sudo 命令后再进行安装;
若选装 DevOps 功能组件时需保证有一台内存大于 8G 的节点, 因为 Jenkins 默认的 JVM 设置会需要 6~8 G 的整块内存, 若可用内存不足可能会造成该节点崩溃.
操作系统 | 最小配置(每台) |
---|---|
CentOS 7.5 (64 bit) | CPU:2 核, 内存:4 G, 系统盘:40 G |
Ubuntu 16.04/18.04 LTS (64 bit) | CPU:2 核, 内存:4 G, 系统盘:40 G |
Red Hat Enterprise Linux Server 7.4 (64 bit) | CPU:2 核, 内存:4 G, 系统盘:40 G |
Debian Stretch 9.5 (64 bit) | CPU:2 核, 内存:4 G, 系统盘:40 G |
以下用一个示例介绍 multi-node 模式部署多节点环境, 本示例准备了 3 台 CentOS 7.5 的主机并以 root 用户准备安装. 登录主机名为 Master 的节点作为任务执行机 Taskbox 来执行安装步骤.
在 安装说明 已经介绍了 KubeSphere 集群架构是由管理节点 (Master) 和工作节点 (Node) 构成的, 这 3 台主机分别部署 1 个 Master 节点和 2 个 Node 节点.
假设主机信息如下所示:
主机 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 2.1.0 安装包至待安装机器, 进入 conf 目录.
- $ curl -L https://kubesphere.io/download/stable/v2.1.0> installer.tar.gz \
- && tar -zxf installer.tar.gz && cd kubesphere-all-v2.1.0/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 用户.
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_host 和 ip 都替换为当前 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 命令), 使镜像可保存在持久化存储并节省机器空间.
第三步: 安装 KubeSphere
KubeSphere 多节点部署会自动化地进行环境和文件监测, 平台依赖软件的安装, Kubernetes 和 etcd 集群的自动化部署, 以及存储的自动化配置. Installer 默认安装的 Kubernetes 版本是 v1.15.5.
说明:
通常情况您不需要修改任何配置, 直接安装即可.
网络插件默认是 calico, 存储默认用 OpenEBS https://openebs.io/ 基于 Local Volume 提供持久化存储服务, 若您需要自定义安装参数, 如网络, 存储, 负载均衡器插件, 可选功能组件等相关配置需在 conf/common.YAML 文件中指定或修改, 参考 集群组件配置说明.
支持存储类型: GlusterFS https://www.gluster.org/ ,Ceph RBD https://ceph.com/ ,NFS,Local Volume,QingCloud 云平台块存储 https://docs.qingcloud.com/product/storage/volume/ (QingCloud 公有云单节点挂盘限制为 10 块),QingStor NeonSAN, 存储配置相关的详细信息请参考 存储配置说明.
由于 Kubernetes 集群的 Cluster IP 子网网段默认是 10.233.0.0/18,Pod 的子网网段默认是 10.233.64.0/18, 因此安装 KubeSphere 的节点 IP 地址范围不应与以上两个网段有重复, 若遇到地址范围冲突可在配置文件 conf/common.YAML 修改
kube_service_addresses
或 kube_pods_subnet 的参数.
参考以下步骤开始 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-10-14
- ################################################
- 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, 然后在防火墙开放这个源端口, 确保外网流量可以通过该端口.
(3) 安装成功后, 浏览器访问对应的 URL, 如 http://{$ 公网 IP}:30880, 即可进入 KubeSphere 登录界面, 可使用默认的用户名和密码登录 KubeSphere 控制台体验, 登录后请立即修改默认密码. 参阅 快速入门 帮助您快速上手 KubeSphere.
注意: 登陆 Console 后请在 "集群状态" 查看服务组件的监控状态, 待所有组件启动完成后即可开始使用, 通常所有服务组件都将在 15 分钟内启动完成.
UI 快览
KubeSphere (https://github.com/kubesphere/kubesphere) 是一个开源的以应用为中心的容器管理平台, 支持部署在任何基础设施之上, 并提供简单易用的 UI, 极大减轻日常开发, 测试, 运维的复杂度, 旨在解决 Kubernetes 本身存在的存储, 网络, 安全和易用性等痛点, 帮助企业轻松应对敏捷开发与自动化监控运维, 端到端应用交付, 微服务治理, 多租户管理, 多集群管理, 服务与网络管理, 镜像仓库, AI 平台, 边缘计算等业务场景.
来源: https://www.cnblogs.com/kubesphere/p/12014219.html