在前面的所有例子中,各种资源基本上都是通过YAML配置文件创建的。如果不熟悉资源的元数据,很难创建出合适的资源。尽管Dashboard给用户提供了一定的便利性,但是其功能仍然比较单一。
如果将Kubernetes比作是Linux内核,那么KubeSphere则是各种Linux发行版。它为Kubernetes提供了极大的易操作性。KubeSphere愿景是打造一个以Kubernetes为内核的云原生分布式操作系统,它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用地集成,支持云原生应用在多云与多集群的统一分发和运维管理。它提供全栈的IT自动化运维的能力,简化企业的DevOps工作流。本章将详细介绍KubeSphere的安装和使用方法。
KubeSphere为用户提供了非常方便的安装方式,主要有All-in-one和在已有集群上面安装两种方式。本节将详细介绍这两种安装方法。
KubeSphere目前最新的版本为3.0,其官方网站为:https://kubesphere.io/。
其中主界面如图12-1所示。
KubeSphere官方为用户提供了两种安装方式,其中一种是在已有的Kubernetes集群上安装,另外一种是非常方便的All-in-one安装方式。如果用户是在生产环境中使用KubeSphere,需要使用第1种安装方式。如果用户是一个初学者,想要快速体验KubeSphere,则可以使用第2种安装方式。
对于第1种安装方式,Kubernetes的版本必须是1.15.0以上,硬件要求至少保证CPU有1个内核,内存不少于2GB。另外在Kubernetes集群中必须预先配置了存储类,apiserver的CSR功能也必须激活。
对于第2种安装方式,要求操作系统为Ubuntu 16.04或者18.04、Debian Buster或者Stretch、CentOS 7.x以及Red Hat Enterprise Linux 7等,关于硬件的详细需求,用户可以参考其官方网站。

图12-1 KubeSphere主页面
All-in-one安装方式为初学者提供了一种一键安装Kubernetes和KubeSphere的途径。在这种方式下,用户只需要一个kk命令,即可在一台机器上面完成Kubernetes和KubeSphere的安装,不需过多的人工干预。
KubeSphere的主要管理工具为KubeKey,用户需要首先下载该工具,然后使用该工具安装KubeSphere。
(1)KubeKey的下载方法为:

对于国内用户,KubeSphere专门提供了镜像站点,以加快安装速度。用户在执行安装之前,需要设置KKZONE环境变量,如下所示:
[root@kubesphere ~]# export KKZONE=cn
然后再使用前面的命令下载KubeKey。
(2)当下载完成之后,会在当前目录中生成一个名称为kk的可执行文件。如果该文件没有执行权限,则用户需要使用以下命令进行授权:
[root@kubesphere ~]# chmod +x kk
(3)接下来的操作主要是通过kk管理工具进行的,安装KubeSphere的命令如下:
[root@kubesphere ~]# ./kk create cluster --with-kubernetes v1.17.9
--with-kubesphere v3.0.0
其中--with-kubernetes选项用来指定Kubernetes的版本,--with-kubesphere选项用来指定KubeSphere的版本。
(4)接下来就是等待安装完成,这个过程花费的时间比较长,视用户的网络情况而定,用户需要耐心等待。安装过程中的每个步骤KubeKey都给出了详细的日志,用户可以通过观察日志来了解安装进度。如果安装过程出现错误,用户也可以通过日志来分析原因。
(5)安装完成之后,KubeKey会给出一个验证是否安装成功的命令,如下所示:
[root@kubesphere ~]# kubectl logs -n kubesphere-system $(kubectl get pod -n
kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
如果安装成功,则以上命令会在最后输出以下信息:

以上信息的输出表示KubeSphere已经安装成功,并且给出了控制台的地址、账号和默认的密码。用户可以通过以上信息登录控制台。
注意
目前KubeSphere 3.0对于CentOS 8的安装支持还不是很好,建议另外搭建虚拟机环境,在CentOS 7上面体验KubeSphere。
如果用户已经安装好Kubernetes集群,则可以使用YAML配置文件来安装KubeSphere。安装方法也比较简单,命令如下所示:

当安装完成之后,使用以下命令查看安装日志,以检验是否安装成功:

使用以下命令查看Pod状态:
[root@kubesphere ~]# kubectl get pod --all-namespaces
KubeSphere为用户提供了基于图形界面的集群管理方式,通过KubeSphere的控制台,用户可以查看各个服务组件的状态,管理部署、服务以及项目等资源,本节将详细介绍KubeSphere的使用方法。
在浏览器中输入前面给出的控制台地址,出现登录界面,如图12-2所示。

图12-2 登录KubeSphere控制台
输入前面给出的账号和密码,登录进入控制台,出现仪表盘,如图12-3所示。

图12-3 KubeSphere仪表盘
点击“平台管理”链接,出现管理平台界面,如图12-4所示。

图12-4 管理平台
图12-4一共有3个菜单,其中最常用的是“集群管理”。点击“集群管理”链接,打开集群管理界面,如图12-5所示。
在图12-5中,左侧为功能菜单,一共包括概览、节点管理、服务组件、项目管理、应用负载、配置中心、自定义资源CRD、存储管理、监控告警以及集群设置等项目。

图12-5 集群管理界面
节点管理显示了当前集群中的各种节点的状态,如图12-6所示。

图12-6 节点状态
从图12-6可知,当前集群中有1个节点,其中1个Master节点,1个工作节点。下面的节点列表每1行描述了一个节点,点击右侧的
按钮,可以对该节点进行设置是否可以调度。
服务组件模块显示了当前KubeSphere系统中的各种服务组件的状态,如图12-7所示。

图12-7 服务组件
所有的服务组件分为3个部分,其中KubeSphere有5个,Kubeletes有4个,Monitoring有9个。
在KubeSphere中,项目对应Kubeletes的命名空间,如图12-8所示。

图12-8 项目管理
项目分为用户项目和系统项目,其中用户项目为用户自己创建的命名空间,而系统项目则是KubeSphere系统本身的命名空间。点击用户项目页面底部的“创建”按钮,可以创建一个新的项目,如图12-9所示。

图12-9 创建项目
在“名称”文本框中输入项目名称,例如development,然后单击“确定”按钮即可完成项目的创建。
工作负载模块是最重要的模块,在该模块中用户可以管理部署、任务、服务和应用路由等Kubeletes资源。下面演示如何使用KubeSphere控制台创建一个Nginx应用。
(1)打开在工作负载界面,在“部署”标签页中点击右侧的“创建”按钮。打开“创建部署”对话框,如图12-10所示。

图12-10 “创建部署”对话框
在“名称”文本框中输入部署的名称,例如webserver,点击“项目”下拉菜单,选择前面创建的development项目,点击“下一步”按钮,进入“容器镜像”对话框,如图12-11所示。

图12-11 “容器镜像”对话框
(2)容器组副本数量即前面介绍的replicas选项,用户可以根据自己的实际需要进行设置。点击“添加容器镜像”按钮,打开“添加容器”对话框,如图12-12所示。

图12-12 “添加容器”对话框
(3)容器设置。在图12-12所示的界面中,点击DockerHub右侧的
按钮,进行镜像搜索。输入nginx,然后在下拉菜单中选择官方的nginx镜像,如图12-13所示。

图12-13 选择nginx镜像
此外,用户还可以进行其他的容器设置,例如容器名称、容器类型、资源限制以及端口设置等,用户可以根据自己的实际情况进行修改,如图12-14所示。

图12-14 配置容器
配置完成之后,点击底部的
按钮,关闭“添加容器”对话框。继续点击“下一步”按钮,进行剩下的操作。
(4)设置存储卷。接下来是添加存储卷,如图12-15所示。

图12-15 “存储卷”管理
如果用户需要为Nginx应用添加存储卷,可以点击“添加存储卷”按钮进行添加,如果没有需要,则可以直接点击“下一步”按钮。
(5)高级设置。在该界面中,用户可以设置节点的调度策略以及标签等元数据,如图12-16所示。如果没有需要,则点击“创建”按钮,完成Nginx应用的部署。

图12-16 “高级设置”对话框
稍等片刻之后,在部署列表中就可以看到新创建的Nginx应用处于运行中了,如图12-17所示。

图12-17 查看部署状态
服务模块包含了当前Kubeletes集群中的各种服务清单,如图12-18所示。

图12-18 服务管理
接下来介绍如何创建一个服务,使得前面创建的Nginx可以被外部访问。
(1)单击右侧的“创建”按钮,打开“创建服务”对话框,如图12-19所示。

图12-19 “创建服务”对话框
在“名称”文本框中输入服务的名称,例如webserver-svc,在“项目”下拉菜单中选择前面创建的development项目,单击“下一步”按钮进入“服务设置”对话框。
(2)在图12-20所示的对话框中,可以设置服务的访问类型、标签选择器以及端口等。

图12-20 “服务设置”对话框
在本例中,服务类型选择“通过集群内部IP来访问服务Virtual IP”选项。在LabelSelector的键文本框中输入app,值文本框中输入webserver,这个标签与前面创建的Nginx应用要一致。“服务端口”文本框中输入前面设置的Nginx对外服务的端口80。最后点击“下一步”按钮。
(3)高级设置。在“高级设置”对话框中勾选“外网访问”复选框,然后在“访问方式”下拉菜单中选择NodePort选项,如图12-21所示。

图12-21 “高级设置”对话框
单击“创建”按钮,完成服务的创建。
此时,用户可以在服务列表中看到刚才创建的服务,如图12-22所示。

图12-22 服务列表
从图12-22可以看到,Kubeletes为当前的服务自动分配了一个端口30251。用户可以通过节点的IP地址和端口30251来访问Nginx了,如图12-23所示。

图12-23 通过NodePort服务Nginx服务