在 Linux 部署多节点 Kubernetes 集群与 KubeSphere 容器平台

2019年12月9日开发手记

KubeSphere 是在 Kubernetes 之上构建的以应用为中心企业级容器平台,所有供为用户提供简单易用的操作界面以及向导式操作方式。同时,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 最小化安装。

在 Linux 部署多节点 Kubernetes 集群与 KubeSphere 容器平台

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

  • KubeSphere 2.1 默认仅开启最小化安装,Installer 已支持自定义安装各个可插拔的功能组件,用户可根据业务需求和机器配置选择安装所需的组件,请确保开启可插拔组件之前机器资源满足最低要求,参考开启可选组件的安装。
  • 安装时间跟网络情况和带宽、机器配置、安装节点个数等因素有关,可通过调高带宽的方式,或在安装前 配置镜像加速器 来加快安装速度。

说明:

  • 本安装示例仅作为快速测试部署的演示,因此将使用默认的 OpenEBS 基于 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

在 Linux 部署多节点 Kubernetes 集群与 KubeSphere 容器平台

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

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 示例:

在ubuntu18.04中安装opencv_contrib-3.2.0采坑教程

[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 命令),使镜像可保存在持久化存储并节省机器空间。

第三步: 安装 KubeSphere

KubeSphere 多节点部署会自动化地进行环境和文件监测、平台依赖软件的安装、Kubernetes 和 etcd 集群的自动化部署,以及存储的自动化配置。Installer 默认安装的 Kubernetes 版本v1.15.5

说明:

  • 通常情况您不需要修改任何配置,直接安装即可。
  • 网络插件默认是 calico,存储默认用 OpenEBS 基于 Local Volume 提供持久化存储服务,若您需要自定义安装参数,如网络、存储、负载均衡器插件、可选功能组件等相关配置需在 conf/common.yaml 文件中指定或修改,参考 集群组件配置说明
  • 支持存储类型:GlusterFSCeph RBDNFSLocal VolumeQingCloud 云平台块存储 (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_addresseskube_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 分钟内启动完成。

在 Linux 部署多节点 Kubernetes 集群与 KubeSphere 容器平台

UI 快览

在 Linux 部署多节点 Kubernetes 集群与 KubeSphere 容器平台

在 Linux 部署多节点 Kubernetes 集群与 KubeSphere 容器平台

在 Linux 部署多节点 Kubernetes 集群与 KubeSphere 容器平台

KubeSphere (https://github.com/kubesphere/kubesphere) 是一个开源的以应用为中心的容器管理平台,支持部署在任何基础设施之上,并提供简单易用的 UI,极大减轻日常开发、测试、运维的复杂度,旨在解决 Kubernetes 本身存在的存储、网络、安全和易用性等痛点,帮助企业轻松应对敏捷开发与自动化监控运维、端到端应用交付、微服务治理、多租户管理、多集群管理、服务与网络管理、镜像仓库、AI 平台、边缘计算等业务场景。

敏捷开发:承认别人的优秀

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享